背景 -
我的网站代码托管在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 -
答案 0 :(得分:1)
在这种情况下,最好的做法是将特定警告视为误报,因为它是。请记住,mod_security不支持内容编码,当您处理WAF时,误报是非常正常的。
仅针对一个误报禁用所有mod_security规则是愚蠢的。查找被触发的规则的id并将其禁用“SecRuleRemoveById”。在我的框中,我创建了一个额外的配置来放置我想要禁用的所有规则。
SecRuleRemoveById 960903
SecRuleRemoveById 970903
SecRuleRemoveById 970902
答案 1 :(得分:0)
我设法在Firefox中创建了一个没有任何问题的帐户。