如何检测SQL注入和CSS攻击漏洞

对于他们的攻击,主要是通过使用正则表达式来做输入检测:

  1. 检测SQL meta-characters的正则表达式 :/(\%27)|(’)|(--)|(\%23)|(#)/ix

    1. 解释:我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。

  2. 修正检测SQL meta-characters的正则表达式: /((\%3D)|(=))[^ ]*((\%27)|(’)|(--)|(\%3B)|(:))/i

    1. 解释: 这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。

  3. 典型的 SQL 注入攻击的正则表达式: /w*((\%27)|(’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix

    解释:

    1. w* - 零个或多个字符或者下划线。

    2. (\%27)|’ - 单引号或它的hex等值。

    3. (\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -‘or’的大小写以及它的hex等值

  4. 检测SQL注入,UNION查询关键字的正则表达式: /((\%27)|(’))union/ix

    1. (\%27)|(’) - 单引号和它的hex等值

    2. union - union关键字

    3. 可以同样为其他SQL查询定制表达式,如 >select, insert, update, delete, drop, 等等.

  5. 检测MS SQL Server SQL注入攻击的正则表达式: /exec(s|+)+(s|x)pw+/ix

    1. exec - 请求执行储存或扩展储存过程的关键字

    2. (s|+)+ - 一个或多个的空白或它们的http等值编码

    3. (s|x) p- ‘sp’或‘xp’字母用来辨认储存或扩展储存过程

    4. w+ - 一个或多个字符或下划线来匹配过程的名称


CSS的检测也主要是正则表达式:

  • 一般 CSS 攻击的正则表达式: /((\%3C)|<)((\%2F)|/)*[a-z0-9\%]+((\%3E)|>)/ix

    • 解释:

    • ((\%3C)|<) -检查<和它hex等值

    • ((\%2F)|/)*-结束标签/或它的 hex等值

    • [a-z0-9\%]+ -检查标签里的字母或它hex等值

    • ((\%3E)|>) -检查>或它的hex等值

  • ")/I

    • 解释:

    • (\%3 C)|<) -<或它的hex等值

    • (\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -’img’字母或它的大小写hex等值的变化组合

    • [^ ]+ -除了换行符以外的任何跟随

    • (\%3E)|>) ->或它的hex等值

  • CSS 攻击的极端的正则表达式 : /((\%3C)|<)[^ ]+((\%3E)|>)/I

    • 解释:

    • 这个规则简单寻找<+除换行符外的任何字符+>。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。

你可能感兴趣的:(js)