Olá Guto
Não sei qual é o seu nível mas, salvo engano, parece-me que você não compreendeu bem o que a macro sc_sql_injection faz. Se não for o caso, pode ignorar este post.
A macro citada serve para retirar de dentro de uma consulta montada a partir dados informados pelo usuário um tipo de instrução utilizada para quebrar a segurança da aplicação através da técnica de Injeção de SQL.
Suponha que você tenha um cadastro de clientes que tenha como campo chave o email e a senha. Você cria um formulário para o usuário ver as informações, exclusivamente, de seu cadastro. No formulário tem os campos email e senha. No campo email (suponhamos que não estejamos usando uma checagem de email válido) o usuário pode preencher como: fulano@provedor.com.br’ OR ‘A’= 'A e a senha 1234. Agora suponha que a montagem da consulta esteja assim:
“SELECT * FROM clientes WHERE senha = '” . {senha} . "’ AND email = "’ . {email} . “’”
Depois de receber as variáveis a instrução ficará:
SELECT * FROM clientes WHERE senha = ‘1234’ AND email = ‘fulano@provedor.com.br’ OR ‘A’ = ‘A’
Dessa maneira, o usuário poderá visualizar os dados de todos os clientes, quebrando a segurança do sistema no quesito confidencialidade.
A macro sc_sql_injection verifica a existência de trechos como ’ OR ‘A’= 'A dentro de uma variável e os retira.
Então, nossa consulta deveria ser escrita da seguinte maneira:
“SELECT * FROM clientes WHERE senha = '” . sc_sql_injection({senha}) . "’ AND email = "’ . sc_sql_injection({email}) . “’”
Espero ter ajudado.
Abraço,
Ronaldo Morais