背景 -

我的网站代码托管在Linux服务器上。我的网站允许雇主进行新注册(http://www.gymandspajobs.com/Employer/Employer.php)。填写的表单将通过“ / javascript”文件夹中的JavaScript进行验证,如果信息正常,则通过JavaScript HTTP请求对象提交数据,并通过“ / somefolder”文件夹中的PHP文件“ somefile.php”提交数据库将在根目录下插入。

问题-

当新用户尝试使用Firefox进行注册(我在WinXP SP2,Firefox-v3.5.2中进行了测试)时,我曾经获得的HTTP响应(我在JavaScript文件中点击了)
“您无权访问此服务器上的/somefolder/somefile.php。” 。

令人惊讶的是,相同的功能在IE7和Chrome浏览器中效果很好。

问题的最新更新-

我与我的网络托管人员联系,收到他们的答复后,我的问题似乎已经解决。


  我们已为您的域禁用mod_security进行修复。我们已将以下行输入到您域的httpdocs目录下的.htaccess文件中。我们还验证并成功提交了雇主注册,没有任何问题。 ~~~~~ SecFilterEngine关闭~~~~~


尽管问题已解决,但我认为制作“ SecFilterEngine off”可能不是解决此问题的最佳方法,因为它损害了安全性。因此,我问主持人,是否有一种方法可以保持mod_security的开启并让我的功能正常工作……这是他们的回复.....


  问:我的代码有什么办法可以使mod_security保持打开状态?
  
  Ans。有可能的。但这并不容易。您必须以某种方式修改文件中的代码,以使URI不应具有模式“ !(^application/x-www-form-urlencoded$|^multipart/form-data;)”,因为我们在apache错误日志中找到了该条目-
  
  
    mod_security-action:403
    
    mod_security-message:使用代码403拒绝访问。HEADER(“ Content-Type”)上的模式匹配“ !(^application/x-www-form-urlencoded$|^multipart/form-data;)
  


我正在通过JavaScript使用HTTP对象和POST方法-

http.setRequestHeader('Content-Type','application/x-www-form-urlencoded')


请指导我在上面的代码行中需要做哪些更改,以便可以将mod_security设置为ON,但我的注册表格仍然有效?

感谢致敬,

-Rupak Kharvandikar-

最佳答案

在这种情况下,最好的办法是威胁将特定警告视为误报,因为事实确实如此。请记住,在处理WAF时,mod_security不支持内容编码,误报是很正常的事情。

但是,仅针对一个误报禁用所有mod_security规则是愚蠢的。查找要触发的规则的ID,并禁用它“ SecRuleRemoveById”。在我的框中,我创建了一个额外的配置,以放置要禁用的所有规则。

modsecurity_crs_60_myignores.conf

SecRuleRemoveById 960903

SecRuleRemoveById 970903

SecRuleRemoveById 970902

关于php - apache mod_security说-访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1283909/

10-11 23:52
查看更多