有什么方法可以检测PHP/MySQL web应用程序中的漏洞(检查GET、POST、COOKIE数组中的某些字符或代码片段/使用具有常见漏洞模式的数据库的库,如果存在的话?)当检测到一个时,我应该如何继续?
例如,如果有人试图使用GET请求方法在我的PHP/MySQL web应用程序中查找SQL注入,我是否应该将该用户执行的操作存储在数据库中,让该应用程序向我发送一封电子邮件,IP禁止该用户,并向他/她显示一条消息:“对不起,我们检测到来自您的帐户的有害操作,我们将对其进行审查。您的帐户已被禁用,并且您的IP地址中的某些功能可能已被禁用。如果这是一个错误,请将所有详细信息通过电子邮件发送给我们。”
谢谢。
发布于 2010-02-09 06:03:05
脑海中浮现三件事:
通过使用Suhosin
进行
如果您觉得一个完全成熟的入侵检测系统太多了,可以尝试一下PHP IDS,因为它可以满足您的开箱即用需求。请注意,在PHP级别检测入侵可能已经为时已晚,无法防止攻击。
在入侵成功的情况下,我想最好的办法是让服务器离线,看看造成了什么破坏。你可能不得不考虑雇佣某人对机器进行法医分析,以防你需要收集合法可用的证据。
如果您觉得需要对未成功的入侵尝试做出反应,并获得恶意用户的IP,请找到ISP,并尽可能详细地告知他入侵尝试。大多数ISP在这些情况下都有滥用联系人。
发布于 2010-02-09 05:48:25
只需在所有的$_REQUEST和$_COOKIE变量上使用strip_tags()来处理出现在这些变量中的代码,至于SQL,您可能需要编写一个查询-如正则表达式之类的,但这应该不是问题,因为您应该始终对查询中的所有变量执行mysql_real_escape_string($str)。试着这样做吧。
function look_for_code_and_mail_admin($str) {
$allowed_tags = "<a>,<br>,<p>";
if($str != strip_tags($str, $allowed_tags)) {
$send_email_to = "some@bodys.email";
$subject = "some subject";
$body = "email body";
mail($send_email_to,$subject,$body);
}
return($str);
}发布于 2010-02-09 05:49:02
你的问题是双重的,我将回答第二部分。
记录所有内容,但不禁止或显示任何消息。假阳性的情况下会很尴尬。作为一般规则,尝试构建一个可以毫无问题地处理任何类型的用户输入的应用程序。
https://stackoverflow.com/questions/2225047
复制相似问题