0

についてURLを入力すると、Apacheのログにセキュリティホールが隠されています

http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123 

ブラウザにアクセスすると、access.logが完全に記録されるため、セキュリティ パラメータが記録されているため、これはセキュリティの質問です。

cmd=admin&password=pass&userName=hsh&meetingID=123 

ここで、ログの出力を制御したいのですが、http://localhost/meeting/op.doなどのセキュリティ パラメータを含まない URL を実行すると、access.log に記録する必要がありますが、セキュリティを含む URL を入力すると、次のようなパラメータ:

http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123

access.log はそれを記録すべきではありません。何を達成するために行くべきですか?

SetEnvIfおよびCustomLogに関するログ変数を保持する方法を試しましたが、機能しません。

SetEnvIf Request_URI "(https?://.+\\?([^=]+=[^=]+)+)" dontlog 
CustomLog logs/access.log common  env=!dontlog 

アプリのリクエスト タイプが get であるため、URL を実行すると、Request_URI はパラメータを取得できません。

http://localhost/meeting/import.php?cmd=admin&password=pass

Request_URI はhttp://localhost/meeting/import.phpであるため、このメソッドは成功しません。

便利な方法や提案はありますか? この問題を解決していただければ幸いです。私の開発環境はLinuxではなくW7であり、シェルをサポートしていないことを思い出してください。

** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****

----問題が変わった!!! ----

ここで、ログの出力を制御したいだけでなく、次のようなセキュリティ パラメータを含まない URL を実行すると、パラメータが *symbol に置き換えられます。

http://localhost/meeting/op.do, 

access.log に記録する必要がありますが、次のようなセキュリティ パラメータを含む URL を入力すると、

http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123,

次に、正規表現の置換が機能する必要があり、次のようになります。

http://localhost/meeting/import.php?cmd=****&password=****&userName=****&meetingID=****, 

ログに、何を達成するために行くべきですか? 注意: 私の開発環境は W7 です。

4

2 に答える 2

2

Request_URIquery_stringが含まれていないため、一致することはありません。mod_rewriteを使用して環境変数を設定する必要があります。

RewriteEngine On
RewriteCond %{QUERY_STRING} (password=)
RewriteRule ^ - [E=dontlog:1]
CustomLog logs/access.log common env=!dontlog
于 2012-09-14T17:44:09.510 に答える
0

POST リクエストを使用してパスワードが必要なものを処理するようにアプリを変更するだけで、より簡単な解決策になるのではないでしょうか? これがまさに、ログに記録したくないものに対して GET リクエストを使用すべきではない理由です。

于 2012-09-14T17:39:37.667 に答える