php – 检测潜在的SQL注入攻击以及其他安全问题

前端之家收集整理的这篇文章主要介绍了php – 检测潜在的SQL注入攻击以及其他安全问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们都知道,制作一个没有一两个缺陷的大型网站几乎是不可能的.因此,我编写了一个小型监视器,用于检查Apache访问日志以查找潜在的sql注入攻击(以及其他内容),并且它运行良好.每当有人尝试攻击时,我都会收到警报,而且我很少有误报,现在默认操作是将它们转储到iptables下拉列表中.它甚至帮助我识别了一些(非安全性)错误并将其删除.

这是我的规则(不区分大小写):

PathInjection = \./\.\./(bin|boot|data|dev|etc|home|lib|lib64|media|mnt|opt|proc|root|sbin|selinux|srv|sys|tmp|usr|var)/

Havij = 0x31303235343830303536

r3dm0v3 = 0x7233646D3076335F68766A5F696E6A656374696F6E

LogicBypass = '.*?(\bor|\band|\bxor|\|\||\&\&).*?--

UnionSelect = union[^a-z-_]+((all|distinct)[^a-z-_]+)?select[^a-z-_]

我想知道的是,您如何绕过这些检查并仍能产生有效注射?你能想出一种在不引入误报的情况下改进它们的方法吗?

几点说明:

>关闭区分大小写.
>我正在使用MysqL.
> Havij和r3dm0v3条目用作全面阻止使用这些自动化工具.
>我正在检查raw和urldecoded字符串.
>我不是在寻找像“制作更安全的代码”这样的答案.
>我不是在寻找一种不同的方式来做到这一点,只是一种改善现有逻辑的方法.

编辑:
好吧,所以人们似乎误解了我的意图.这可能是我的错,因为我没有完全解释.这被要求作为监控产品的附加功能,旨在提供最低限度的安全监控.作为我们与客户和文档对话的一部分,我们强调这不是一个包罗万象,也不是替代适当的安全基础设施(例如IDS和防火墙).它只是一种信息服务,可帮助提供基本威胁检测并生成有关潜在攻击数量统计信息.我不是想写一个IDS或防火墙.如果由我决定,我会退出功能并告诉他们使用自己的监控系统安装一整套安全基础设施,但这不是我的号召.目前的情况是我一直在自己的网站上测试系统.现在,我只是想找到一种方法来改进正则表达式字符串,使其更有效.希望这可以解决一些问题.

你在谈论写IDS.除非您的产品是IDS,否则只需获取并安装一个. Snort是众所周知的,并有免费版本.

I’m not looking for a different way to do this,just a way to improve my current logic.

有时候,在安全方面,错误方法就是这样.我怎么会搞乱你现在的逻辑? Unicode或十六进制编码.

猜你在找的PHP相关文章