Page 1 sur 1
retirer requete SQL en Lotus Script

Publié:
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 !

Publié:
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 ?

Publié:
14 Sep 2010 à 20:16
par Michael DELIQUE
ben oui !
je dois me pencher sur cette problématique

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

Publié:
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

Publié:
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.

Publié:
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

Publié:
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