Last active
May 6, 2019 18:56
-
-
Save BoscoBecker/785cec62614d0b3f88bbeee2dd538e9f to your computer and use it in GitHub Desktop.
Escape for Delphi, Function em pascal que verifica consultas contendo Injeção de SQL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function EscapeSQLInjection(text: String): Boolean; | |
var | |
i : Integer; | |
/// Esse método tem como objetivo garantir via filtragem | |
/// a segurança do tratamento de dados pelo usuário e otimização de consultas SQL. | |
/// Caso o texto passado como parâmetro da pesquisa tenha caracteres | |
/// maliciosos ele me retornará um TRUE, caso contrário retorna FALSE, isto é | |
/// já saberei e evitarei consultas desnecessárias ao SGDB . | |
/// RECOMENDO o uso em todos os Grids com consultas, telas de login, | |
/// nas entrada de dados ou antes de enviar os dados para alguma SP (Stored procedure) | |
/// Powered by @boscobecker - 2019 | |
const | |
PalavrasArray : Array[0..40]of string =( | |
'','--','-','*','/','.', | |
' ','"','/*','*/','!','?', | |
'+',',','{', '}', '=', '1=1', | |
'select', 'from','where', | |
'all','in', 'and','or' , | |
'not','group by','exists', | |
'with', 'order by','by', | |
'union','alter','table', | |
'begin','exec','grant', | |
'create','drop','insert', | |
'truncate'); | |
begin | |
///Default | |
Result := False; | |
/// Caso tenha informado apenas 2 caracteres | |
/// para não fazer SQL pesado usando apenas | |
/// 2 caracteres, just it | |
if (Length(text) <= 2 ) then | |
Begin | |
Result := False; | |
Exit; | |
end; | |
/// verificando conteúdo dos dados | |
for i:= 0 to High(PalavrasArray) do | |
if Pos(AnsiUpperCase(PalavrasArray[i]),AnsiUpperCase(campo)) > 0 then | |
Result := True; | |
/// Aspas simples adicional de ' | |
if (pos(chr(39), campo) > 0) then | |
Result := True; | |
end; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Exemplo de como usar o método no seu código / Example of how to use the method in your code