バックグラウンド -
ウェブサイトのコードを 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 ファイルでタップしたもの) は " You don't have permission to access /このサーバーの somefolder/somefile.php. " .
驚いたことに、同じ機能が IE7 と Chrome で完全に機能しました。
問題に関する最新の更新 -
Web ホスティング担当者に連絡しましたが、彼らからこの返信を受け取った後、問題は解決したようです。
この問題を修正するために、ドメインの 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;)
" at HEADER("Content-Type")
私はHTTPオブジェクトとJavaScript経由のPOSTメソッドを次のように使用しています-
http.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
mod_security をオンのままにし、登録フォームが機能するようにするには、上記のコード行でどのような変更を行う必要があるか教えてください。
よろしくお願いいたします。
-Rupak Kharvandikar-