apache mod_security说 - 访问被拒绝错误

时间:2009-08-16 09:47:46

标签: php javascript apache http-status-code-403 mod-security

背景 -

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

问题 -

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

令人惊讶的是,相同的功能在IE7和Chrome中运行良好。

问题的最新更新 -

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

  

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

虽然问题已经解决,但我认为制作“SecFilterEngine off”可能不是解决此问题的最佳方法,因为它会破坏安全性。因此,我问托管人员是否有办法让mod_security保持开启状态并让我的功能正常工作......这是他们的回复......

  

Q值。有什么方法我的代码可以工作但保持mod_security ON?

     

答。有可能的。但这并不容易。您必须修改文件中的代码,使URI不应具有“!(^application/x-www-form-urlencoded$|^multipart/form-data;)”模式,因为我们在apache错误日志中找到了此条目 -

     
    

mod_security-action:403

         

mod_security-message:访问被拒绝,代码为403.模式匹配“!(^application/x-www-form-urlencoded$|^multipart/form-data;)”在HEADER(“Content-Type”)

  

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

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

请指导我在上面的代码行中需要做些哪些更改,以便mod_security可以保持开启状态,但我的注册表单是否有效?

谢谢和问候,

-Rupak Kharvandikar -

2 个答案:

答案 0 :(得分:1)

在这种情况下,最好的做法是将特定警告视为误报,因为它是。请记住,mod_security不支持内容编码,当您处理WAF时,误报是非常正常的。

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

modsecurity_crs_60_myignores.conf

SecRuleRemoveById 960903

SecRuleRemoveById 970903

SecRuleRemoveById 970902

答案 1 :(得分:0)

我设法在Firefox中创建了一个没有任何问题的帐户。