php – ajax url使用特定单词“Altar”或“altar”给出403其他网址工作正常

我使用ajax作为GET发送到php文件的网址在我使用单词“Altar”或“altar”后跟空格时给出了403错误.它是一个教堂遗址,所以他们当然会使用这个词.

代码完全正常,直到我在参数中使用该单词.例如,即使内部和特殊字符中的URL和单引号也可以正常工作:

ad2calendar.php?ajax = 1& u = testuser& d = 2013-11-30& s = 1& iurl = altar.jpg& eEvent = 一些特殊的字符!@&^%#$(#@“”& notes = test& eTitle = Test& y = 2013& m = 11

但这给了我403,因为它包含带有空格的“祭坛”这个词.

ad2calendar.php?ajax = 1& u = testuser& d = 2013-11-30& s = 1& iurl =& eEvent = Altar& notes = test& eTitle = Test& y = 2013& m = 11

有关为什么像这样的简单单词会破坏导致403的URL的任何想法?

我自己的故障排除发现403来自一个比php文件存在的目录更高的目录(php在受密码保护的目录中).我想这可能是由于一些字符编码问题,因为我最近将文件更改为UTF-8,但它似乎工作正常.尝试使用空白.htaccess文件,因此没有mod_rewrites,在表单字段上使用encodeURIComponent.该脚本无法检查此字符组合和重定向.

我有php严格的错误报告,并没有抛出php错误,也没有javascript错误.我似乎得到的唯一错误与结果div中显示的403页面有关,对于ajax响应,因为403页面使用的资源不在该目录位置.

代码本身非常复杂,所以我无法真正开始发布所有的内容.只是寻找一些方向来进一步排除故障.老实说,我很快就会为这个词加入黑客攻击.

更奇怪的是,我能够在一个月或两个月前使用这个词,但如果我将代码回滚到那一点,则错误仍然存​​在.

从我的原始访问日志中,首先包含“Altar”并给出200,第二个包含带有尾随空格的“Altar”并给出403.

XXX.XXX.XXX.XXX - - [11/Nov/2013:12:35:22 -0500] "GET /ad2calendar.php?ajax=1&u=testuser&d=2013-11-30&s=0&iurl=&eEvent=Altar&notes=&eTitle=&y=2013&m=11 HTTP/1.1" 200 20102 "http://XXXXX/ad2events.php" "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.16"

XXX.XXX.XXX.XXX - - [11/Nov/2013:12:35:29 -0500] "GET /ad2calendar.php?ajax=1&u=testuser&d=2013-11-30&s=1&iurl=&eEvent=Altar%20&notes=&eTitle=&y=2013&m=11 HTTP/1.1" 403 1098 "http://XXXXX/ad2events.php" "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.16"

发现尖括号中的文字“脚本”也会给出403.示例:

<script > alert("I am Bad"); </script >

以上给出了403错误.这证实存在一些导致此问题的安全功能或编码问题.

最佳答案 您描述的行为听起来像是一个写得很糟糕的
mod_security规则的行为 – 可能是一个试图阻止注入的SQL包含ALTER TABLE等命令,但规则中的关键词拼写不正确(!).请联系您的网站主机了解详情.

点赞