0

最近、会社のWebサイトをホスティング会社(IIS)から社内サーバー(Apache)に移行しました。最初にサイトを構築したグループは、小便の悪い仕事をしました、そして、すべては移住するのに混乱でした。移動はかなりスムーズに進みましたが、error_logを見ると、まだいくつかの欠落しているページがあります。

このドメインに関連する「ファイルが存在しません」エラーのerror_logを継続的にgrepする必要はなく、これらのサーバーでホストしているのは約15かそこらですが、404の場合は次のようにする方が簡単ではないかと思いました。エラーが発生します:

  • PHPページにリダイレクトし、元のURLリクエストを渡します
  • 新しいphpページにURLをlog-ishファイルにダンプさせます

私がこれをタイプするにつれて、私はこれがやりがいのある仕事であるとますます確信しなくなります。根本的な質問はありますが、fwriteを使用した場合の潜在的なセキュリティ問題はありますか?ユーザー入力をファイルに追加する場合、その入力をスクラブする必要がありますか?この入力は、価値のあるものが何であれ、データベースの近くには行きません。前もって感謝します。

4

7 に答える 7

3

あなたがどのファイルに書き込んでいるかを定義している(そしてURLからそれを決定していない)限り、多くのリスクはないはずです:ユーザーから得られる唯一のものはあなたがファイルに書き込むコンテンツです、そしてそのファイルを実行せずにそれを読むだけなら、それはかなり大丈夫なはずです。

この方法で404エラーをログに記録するという考え方は新しいものではありません。これは何度も行われ、大きな問題に直面したことはありません(私が見た最大の問題は、ファイルが非常に速く大きくなったためです。エラーが多すぎます^^)

たとえば、Drupalはこれを少し行います。404エラーがログに記録されますが、データベースに記録されるため、Webインターフェイスを使用してエラーを分析する方が簡単です。

于 2009-12-23T13:52:22.990 に答える
1

まあ、通常のファイルシステムのものだけです: ユーザーにファイルの行き先を指定させないでください: script.php?filename=../../../../../../../etc/passwd/etc/passwd への書き込みの機会すら与えてはいけません (また、スクリプトにそのための FS 権限を与えるべきではありません) . それ以外に、fwrite() には、ある種のコマンド モードにジャンプできる特別な文字はありません。

また、404 ページは非常に単純です (httpd.conf 内):

ErrorDocument 404 /error_page.php

REQUEST_URLファイルにダンプするだけです

于 2009-12-23T13:49:39.050 に答える
0

fwriteはかなり安全なはずです。

または、通常は見つからないページを一覧表示するアクセスログアナライザーを使用することもできます。

于 2009-12-23T13:49:54.947 に答える
0

ディスクに書き込むだけの場合、外部から誰かがディスクに書き込むようにするだけです。明らかに、ファイル名は無効なURLで渡されるパラメーターであってはなりません。非常に長いURLで大量の無効なページリクエストを送信するだけで、それを悪用しようとする人もいます。しかし、彼らはあなたがこれを行っていることを知り、一般的な攻撃であるより効果的な他の方法がある場合は十分に注意する必要があります。

于 2009-12-23T13:53:20.647 に答える
0

ログを HTML (または、たまたまコードを埋め込むことができる他のファイル タイプ) として書き込んでいる場合は、注意が必要な潜在的な問題があります。もちろん、これらのファイルは XSS 攻撃に対して脆弱です。

于 2009-12-23T16:13:17.380 に答える
0

error_log に 404 エラーがすでに記録されているはずです。

必ずカスタム エラー ハンドラを使用して、ユーザーによりわかりやすいエラー メッセージを表示しますが、このサイトで深刻なスループットが見られる場合は、スクリプトから fwrite を使用することはお勧めできません。PHP には、並行ファイル アクセスをサポートするための洗練されたファイル ロック セマンティクスが本質的にありません。

于 2009-12-23T18:09:34.850 に答える
0

一般的なログファイル攻撃は、悪意のある JavaScript が埋め込まれた URL を要求することです。これらの URL はログ ファイルに直接書き込まれ、Web ブラウザでファイルを表示すると実行されます。

  1. 作成したファイルが Web サーバーによって HTML として提供されないようにする
  2. URL の URL エンコードまたは HTML エンコードを検討してください。
于 2009-12-23T16:13:48.783 に答える