1

背景 -

我的网站代码托管在 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 开启的情况下工作吗?

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

mod_security 动作: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-

4

2 回答 2

1

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

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

modsecurity_crs_60_myignores.conf

SecRuleRemoveById 960903

SecRuleRemoveById 970903

SecRuleRemoveById 970902

于 2009-12-03T06:57:18.787 回答
0

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

于 2009-08-16T10:00:32.000 回答