背景 -
我的网站代码托管在 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-