
LuaJIT FFI bindings para libinjection, fornecendo detecção de injeção de SQL e XSS com APIs específicas de contexto para segurança de aplicações web.
lua-resty-libinjection - Ligações FFI LuaJIT para libinjection
Esta biblioteca está em desenvolvimento ativo e está pronta para produção
Esta biblioteca fornece ligações FFI para libinjection, um tokenizador e analisador de SQL/SQLi e XSS.
Instale esta biblioteca como faria com qualquer outro módulo lua do OpenResty. O arquivo de objeto compartilhado libinjection precisa estar no seu lua_package_cpath, portanto você deve criar um symlink ou copiar o arquivo .so para o local apropriado.
access_by_lua_block {
local libinjection = require "resty.libinjection"
-- API SQLi simples
local issqli, fingerprint = libinjection.sqli(string)
-- ligações específicas de contexto também são fornecidas
issqli, fingerprint = libinjection.sqli_noquote(string)
issqli, fingerprint = libinjection.sqli_singlequote(string)
issqli, fingerprint = libinjection.sqli_doublequote(string)
--API XSS simples
local isxss = libinjection.xss(string)
-- ligações específicas de contexto
isxss = libinjection.xss_data_state(string)
isxss = libinjection.xss_noquote(string)
isxss = libinjection.xss_singlequote(string)
isxss = libinjection.xss_doublequote(string)
isxss = libinjection.xss_backquote(string)
}
sintaxe: issqli, fingerprint = libinjection.sqli(string)
Dada uma string, retorna um booleano issqli representando se SQLi foi detectado, e uma string fingerprint representando a impressão digital libinjection detectada. Na maioria dos casos, esta é a opção preferível; as ligações de API de segundo nível mencionadas abaixo podem ser ligeiramente mais eficientes em contextos específicos.
sintaxe: issqli, fingerprint = libinjection.sqli_noquote(string)
Como libinjection.sqli, no contexto específico de uma string "como está".
sintaxe: issqli, fingerprint = libinjection.sqli_singlequote(string)
Como libinjection.sqli, no contexto específico de uma string entre aspas simples (').
sintaxe: issqli, fingerprint = libinjection.sqli_doublelequote(string)
Como libinjection.sqli, no contexto específico de uma string entre aspas duplas (").
sintaxe: isxss = libinjection.xss(string)
Versão ALPHA do detector de XSS. Dada uma string, retorna um booleano isxss indicando se XSS foi detectado. Na maioria dos casos, esta é a opção preferível; as ligações de API de segundo nível mencionadas abaixo podem ser ligeiramente mais eficientes em contextos específicos.
sintaxe: isxss = libinjection.xss_data_state(string)
Como libinjection.xss, mas executado apenas com o sinalizador DATA_STATE.
sintaxe: isxss = libinjection.xss_noquote(string)
Como libinjection.xss, mas executado apenas com o sinalizador VALUE_NO_QUOTE.
sintaxe: isxss = libinjection.xss_singlequote(string)
Como libinjection.xss, mas executado apenas com o sinalizador VALUE_SINGLE_QUOTE.
sintaxe: isxss = libinjection.xss_doublequote(string)
Como libinjection.xss, mas executado apenas com o sinalizador VALUE_DOUBLE_QUOTE.
sintaxe: isxss = libinjection.xss_backquote(string)
Como libinjection.xss, mas executado apenas com o sinalizador VALUE_BACK_QUOTE.
Copyright 2017 Robert Paprocki
A redistribuição e o uso em formas de código-fonte e binárias, com ou sem modificações, são permitidos desde que as seguintes condições sejam atendidas:
As redistribuições do código-fonte devem manter o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir.
As redistribuições em forma binária devem reproduzir o aviso de direitos autorais acima, esta lista de condições e o aviso de isenção de responsabilidade a seguir na documentação e/ou outros materiais fornecidos com a distribuição.
Nem o nome do detentor dos direitos autorais nem os nomes de seus contribuidores podem ser usados para endossar ou promover produtos derivados deste software sem permissão prévia específica por escrito.
ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DOS DIREITOS AUTORAIS E CONTRIBUIDORES "NO ESTADO EM QUE SE ENCONTRA" E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, AS GARANTIAS IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO A UM FIM ESPECÍFICO SÃO REJEITADAS. EM NENHUM CASO O DETENTOR DOS DIREITOS AUTORAIS OU CONTRIBUIDORES SERÃO RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENCIAIS (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) INDEPENDENTEMENTE DA CAUSA E EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE ESTRITA OU ATO ILÍCITO (INCLUINDO NEGLIGÊNCIA OU OUTRA FORMA) DECORRENTE DE QUALQUER FORMA DO USO DESTE SOFTWARE, MESMO SE AVISADO DA POSSIBILIDADE DE TAIS DANOS.
Por favor, relate bugs criando um ticket no rastreador de problemas do GitHub.