Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测web应用程序中的漏洞以及如何继续_Php_Mysql_Security_Detection_Exploit - Fatal编程技术网

Php 检测web应用程序中的漏洞以及如何继续

Php 检测web应用程序中的漏洞以及如何继续,php,mysql,security,detection,exploit,Php,Mysql,Security,Detection,Exploit,有什么方法可以检测PHP/MySQL web应用程序中的漏洞利用(检查GET、POST、COOKIE数组中的某些字符或代码片段/使用具有所有常见漏洞利用模式(如果存在)的数据库的库),以及在检测到漏洞时应如何进行 例如,如果有人试图使用GET请求方法在我的PHP/MySQL web应用程序中查找SQL注入,我是否应该将用户执行的操作存储在数据库中,让应用程序向我发送电子邮件,对用户进行IP禁止并向他/她显示消息“很抱歉,我们已从您的帐户中检测到有害操作,将对其进行审查。您的帐户已被禁用,某些功能

有什么方法可以检测PHP/MySQL web应用程序中的漏洞利用(检查GET、POST、COOKIE数组中的某些字符或代码片段/使用具有所有常见漏洞利用模式(如果存在)的数据库的库),以及在检测到漏洞时应如何进行

例如,如果有人试图使用GET请求方法在我的PHP/MySQL web应用程序中查找SQL注入,我是否应该将用户执行的操作存储在数据库中,让应用程序向我发送电子邮件,对用户进行IP禁止并向他/她显示消息“很抱歉,我们已从您的帐户中检测到有害操作,将对其进行审查。您的帐户已被禁用,某些功能可能已从您的IP地址禁用。如果这是一个错误,请将所有详细信息通过电子邮件发送给我们。”

谢谢。

只要在所有$\u请求和$\u COOKIE变量上使用strip\u tags()就可以处理这些变量中显示的代码,至于SQL,您可能需要编写一个类似regex之类的查询,但这不应该是个问题,因为您应该始终在查询中使用mysql\u real\u escape\u 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);
}
函数查找代码和邮件管理($str){
$allowed_tags=“,
,”; 如果($str!=带标签($str,$allowed_标签)){ $send_email_to=”some@bodys.email"; $subject=“某个主题”; $body=“电子邮件正文”; 邮件($send\u email\u to,$subject,$body); } 回报($str); }
你的问题有两个方面,我将回答第二部分


记录所有内容,但不要禁止或显示任何消息。如果出现误报,这将令人尴尬。作为一般规则,尝试构建一个可以毫无问题地处理任何类型的用户输入的应用程序。

对我来说,似乎对电子邮件位和所有内容都做了太多的工作。除此之外,我喜欢在s上到处跑我经常使用的网站,并试图找到注射点,这样我就可以警告管理员。你会因此而禁止我吗


我建议您自己寻找可利用的部分,并在必要时进行消毒。Acunetix有一个非常好的程序用于此。如果您不想为Acunetix支付高昂的价格,您可能需要研究一些非常好的firefox插件,称为XSS Me和SQL Inject Me。

想到三件事:

  • 防御性编码,清理所有输入,准备sql语句并使用
  • 通过使用
  • 使用
  • 如果你觉得一个成熟的IDS太多了,试试看,因为它几乎可以满足你的要求。请注意,在PHP级别检测入侵可能已经太晚了,无法阻止攻击

    在成功入侵的情况下,我猜你最好的办法是把服务器离线,看看有什么损坏。你可能不得不考虑雇佣某人来对机器进行法医分析,以防你需要收集合法的证据。


    如果您觉得需要对不成功的入侵尝试作出反应并获得恶意用户的IP,请找到ISP,并尽可能详细地告知他入侵尝试的详细信息。大多数ISP都会就这些情况进行滥用联系。

    嗯,我记不起上一次我看到一个试图记录SQL注入攻击的网站是什么时候了无法穿透

    你不必担心是否有人在攻击网站,因为判断某个东西是否是攻击是主观的。如果网站base64在使用它之前对一些值进行编码和解码会怎么样?你的ID不会捕捉到这些。如果用户想要发布一段代码,它会被检测为攻击,因为它包含SQL?这太浪费时间了…如果你真的需要知道是否有人在攻击你,只需在单独的机器上安装一些ID,以只读方式访问传入的流量。我说是单独的机器,因为许多ID本身容易受到攻击,只会使情况变得更糟


    使用标准的安全编程方法,使用参数化SQL查询或ORM。

    我知道如何保护我的应用程序不受攻击,我只想抓住任何试图故意破坏它并造成伤害的用户。考虑到有多少种不同的攻击,我认为一个正则表达式都做不到。使用转义到防御SQL注入确实是错误的方法;参数化查询(也就是说,mysqli函数/类非常安全。你是对的,它们都很难调用,特别是sql注入。即使是我刚才提供的函数,如果有人输入了标记,但不知道这是不允许的,那么它也会显示出积极的效果。我如何区分你和试图侵入应用程序并窃取每个用户信息的用户呢开启?如果我注意到有人在我的应用程序中运行漏洞攻击,我想阻止该用户继续进行,如果他最终碰巧成功。好吧,这就是问题所在,你无法区分我和恶意用户。你也无法区分恶意用户和普通用户只是不小心键入了错误的内容。你需要如果他们做了不止一次、两次,甚至五次,那么它就会激活反利用漏洞。所以我想如果你真的担心它,那么你需要把它设置好,但我仍然建议你自己去寻找漏洞并对其进行消毒。-1如果你使用的是安全的编程方法,你不会有人知道php ID发生了什么事吗?他们的网站已经关闭一个月或更长时间了?他们把它移到了phpids.org。我希望他们能转发流量。