SQL注入,评论的方式

时间:2013-12-06 11:48:12

标签: php html anchor

我正在使用注射和技巧,因此我遇到了#评论MySQL查询的方式。

正如我们所知道的在HTML中使用命名锚一样,在这种注入URL的情况下,#的工作方式类似于HTML命名锚,并不意味着对运行查询有害。

问题是为什么会发生这种情况以及为什么PHP不直接包含#作为输入的其余部分? (例如?id = 2547#)

2 个答案:

答案 0 :(得分:1)

哈希值由浏览器在本地处理,而不是发送到服务器。例如。如果你写一个URL

http://yourdomain.com/script.php?param=foo#id=1234#

浏览器只是将GET /script.php?param=foo发送到服务器。当响应返回时,它会在HTML中搜索id=1234锚点并向下滚动到它。

如果要将评论发送到服务器,则需要进行百分比编码:

http://yourdomain.com/script.php?param=foo%23id=1234%23

答案 1 :(得分:0)

由于浏览器认为它是一个特殊字符并且不是url编码,当浏览器遇到#时,它会假定前一个GET参数(如果存在)已经结束。

如果它是url编码并且输入没有正确消毒,那么它实际上会造成注入威胁,否则如果用户输入被正确消毒,我不会担心这个。

修改

如果数据库允许这样的输入(例如varchar2)并且html-special-chars在输入期间被正确转义,那么数据库当然会保存用户输入,因为它们实际上只是符号而不会有任何符号。特殊意义。