Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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站点代码中发现盲SQL漏洞_Php_Sql_Security - Fatal编程技术网

在php站点代码中发现盲SQL漏洞

在php站点代码中发现盲SQL漏洞,php,sql,security,Php,Sql,Security,您好,我是一个网络领域的初学者,我想知道是否有人可以指导我在整个论坛的代码中应该在哪里寻找盲目的sql注入漏洞 例如,如果这是利用漏洞index.php?m=content&c=rss&catid=[valid catid] 我应该在代码中查找验证用户表单的部分&url输入;我真的是一个php初学者,我应该如何解决它。有很多关于php安全性的资料。几个链接: 关于表单输入的问题:您应该首先研究和使用的一件事是。每个$\u GET、$\u POST、$\u COOKIE(甚至$\u服务器

您好,我是一个网络领域的初学者,我想知道是否有人可以指导我在整个论坛的代码中应该在哪里寻找盲目的sql注入漏洞 例如,如果这是利用漏洞
index.php?m=content&c=rss&catid=[valid catid]

我应该在代码中查找验证用户表单的部分&url输入;我真的是一个php初学者,我应该如何解决它。

有很多关于php安全性的资料。几个链接:


关于表单输入的问题:您应该首先研究和使用的一件事是。

每个$\u GET、$\u POST、$\u COOKIE(甚至$\u服务器)超全局输入都必须经过验证且不受信任


如果您在代码中使用它们中的任何一个,如果它要进入数据库,请使用mysql\u real\u escape\u string;如果它在您的网站上直接显示为html(以及从数据库调用),您应该使用诸如htmlentities、htmlspecialchars、strip_标记等功能检查XSS。如果您担心SQL注入,那么您的设计就不好。您应该对ADODB或PDO之类的库使用参数化查询。毫无疑问,您可以100%地防止SQL注入

对于盲sql测试,您可以执行以下操作:
index.php?m=content&c=rss&catid=sleep(30)

此请求应花费30秒才能加载页面。如果您需要一个引号,那么负载将看起来像
”和sleep(30)或1='

要修补此漏洞,您知道catid应为int。因此,您可以在该页面顶部添加以下行:
$\u GET['catid']=intval($\u GET['catid'])

以及我应该在哪里(php的哪个文件)查找它;如果问题在于未过滤表id'sSorry,我不知道phpcms,也无法详细帮助您。但是应该有一个index.php,在那里(或另一个fork),catid和内容被过滤。如果phpcms做得好,他们应该注意我在回答中提到的事情;它的唯一目的不是转义无效字符串;如果我键入ID177并得到错误,我会用有效的错误页面替换它,以便屏蔽dbo respone或其他什么,谢谢。我不确定我是否理解您的意思。例如,如果您确实希望用户转到id 177,但它不在数据库中,因此您收到了一个丑陋的错误,那么问题不在于安全性,而更像是错误处理。我不希望在未检查的id'sah上出现真正的错误盲sql注入的可能性,web领域的初学者(注意双关语)不要忘记$\u服务器。它的许多变量都可以由攻击者控制。例如referer。另外,无论攻击来自何处,参数化的quires都将始终解决此问题。是的,我只是不提它,因为$\u服务器没有经常使用,特别是用于直接插入站点,我从来没有看到它曾经存储在数据库中,尽管有些开发人员这样做很危险。所以你提到它很好。在哪些文件中我可以找到那些关键的用户插入URL控件语句“…你100%受保护…”给人一种错误的安全感。一个天真的程序员可能会想到将SQL代码片段存储在一个表中以备将来评估,认为参数化查询使存储这样的代码片段非常安全,而不会有注入攻击的风险。@Marcelo Cantos哇,我想是的。如果程序员失败得那么惨,那么他应该被砍掉眼泪。每个程序员一开始都很幼稚。事实上,我会对一个新手程序员留下深刻印象,他有创造力为某种扩展机制存储SQL代码片段——有点像为数据库发明高阶编程。所以我会称赞他们所表现出的洞察力和主动性,然后我会温和地向他们解释为什么这通常是个坏主意。我当然不会斥责他们说,“老兄,你应该成为PWND!”这一点都没有帮助。