Page 1 sur 1

retirer requete SQL en Lotus Script

MessagePublié: 14 Sep 2010 à 19:03
par Michael DELIQUE
Bonjour

je cherche un moyen de retirer d'une chaine toute requete sql y figurant. et bien sur sans passer par un regex et en lotus script.

le probleme n'est pas de détecter un début de requete, mais ça fin !

MessagePublié: 14 Sep 2010 à 20:11
par roubech
t'es en train de blinder une appli web ? nb tentatives, modifier une ressource, retirer le code html, retirer les requetes ... t'as peur que quelqu'un saisisse du code dans un formulaire web et arrive à le faire exécuter sur ton serveur pour le peter ?

MessagePublié: 14 Sep 2010 à 20:16
par Michael DELIQUE
ben oui !

je dois me pencher sur cette problématique

MessagePublié: 17 Sep 2010 à 15:44
par Michael DELIQUE
up !?

MessagePublié: 17 Sep 2010 à 16:18
par mike76
salut,

je ne vois pas trop comment faire pour détecter la fin d'une requête

au pire tu ne peux pas remplacer les intructions SELECT, UPDATE, INSERT, ... par une chaîne vide comme ça la requête ne s'exécutera pas

je ne sais pas ce que tu en penses

MessagePublié: 17 Sep 2010 à 16:22
par Michael DELIQUE
re,

j'ai pensé à ça

et aussi a un truc un peu plus sioux

je vire tout entre le select et le from ou entre le insert et le values et puis tout ce qui est avant la ) et le values.

MessagePublié: 17 Sep 2010 à 16:24
par mike76
c'est vrai que cette solution n'est pas super géniale, mais je ne vois pas comment tu pourrais faire autrement
bon week-end

MessagePublié: 17 Sep 2010 à 17:11
par Michael DELIQUE
grosso modo ça donne ça

Code : Tout sélectionner
Function SQLRemoveRequest(Chaine As String) As String
   
   Dim i As Integer
   Dim j As Integer
   
   SQLRemoveRequest = Chaine
   
   If Instr(Ucase(SQLRemoveRequest),"CREATE DATABASE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE DATABASE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"COMMIT") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMIT","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"ROLLBACK") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"ROLLBACK","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"CREATE INDEX") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE INDEX","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"TRUNCATE TABLE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"TRUNCATE TABLE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"ALTER COLUMN") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER COLUMN","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"DROP COLUMN") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP COLUMN","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"DROP TABLE") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"DROP TABLE","",,,1)
   End If
   
   If Instr(Ucase(SQLRemoveRequest),"MODIFY") > 0 Then
      SQLRemoveRequest = Replace(SQLRemoveRequest,"MODIFY","",,,1)
   End If
   
   While Instr(Ucase(SQLRemoveRequest),"SELECT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"SELECT")
      j = Instr(Ucase(SQLRemoveRequest),"FROM")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"SELECT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CREATE TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CREATE TABLE")
      j = Instr(Ucase(SQLRemoveRequest),")")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"ALTER TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"ALTER TABLE")
      j = Instr(Ucase(SQLRemoveRequest),"ADD")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"ALTER TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+3))
      End If      
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CUSTOMER") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CUSTOMER")
      j = Instr(Ucase(SQLRemoveRequest),")")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CUSTOMER","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If      
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"CREATE VIEW") > 0
      i = Instr(Ucase(SQLRemoveRequest),"CREATE VIEW")
      j = Instr(Ucase(SQLRemoveRequest),"FROM")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"CREATE VIEW","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+4))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"INSERT INTO") > 0
      i = Instr(Ucase(SQLRemoveRequest),"INSERT INTO")
      j = Instr(Ucase(SQLRemoveRequest),"VALUES")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"INSERT INTO","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+1))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"UPDATE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"UPDATE")
      j = Instr(Ucase(SQLRemoveRequest),"WHERE")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"UPDATE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"DELETE FROM") > 0
      i = Instr(Ucase(SQLRemoveRequest),"DELETE FROM")
      j = Instr(Ucase(SQLRemoveRequest),"WHERE")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"DELETE FROM","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"RENAME TABLE") > 0
      i = Instr(Ucase(SQLRemoveRequest),"RENAME TABLE")
      j = Instr(Ucase(SQLRemoveRequest),"TO")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"RENAME TABLE","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"COMMENT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"COMMENT")
      j = Instr(Ucase(SQLRemoveRequest),"IS")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"COMMENT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+2))
      End If
   Wend
   
   While Instr(Ucase(SQLRemoveRequest),"GRANT") > 0
      i = Instr(Ucase(SQLRemoveRequest),"GRANT")
      j = Instr(Ucase(SQLRemoveRequest),"IS")   
      If j = 0 Then
         SQLRemoveRequest = Replace(SQLRemoveRequest,"GRANT","",,,1)
      Else
         SQLRemoveRequest = Left(SQLRemoveRequest,i-1)+Right(SQLRemoveRequest,Len(SQLRemoveRequest)-(j+5))
      End If
   Wend
   
End Function