12

サーバー側から呼び出される Perl スクリプトに取り組んでおり、Apache 2 サーバーに含まれています。スクリプトは、実際のエラーを表示するのではなく、一般的な「内部サーバー エラー」ページを表示しています。Apache エラー ログを確認すると、次のメッセージが表示されます。

unable to include "/foobar/index.pl" in parsed file /home/foouser/domains/foosite.com/public_html/foobar/index.shtml, referer: http://www.foosite.com/foobar/
suexec policy violation: see suexec log for more details, referer: http://www.foosite.com/foobar/
Premature end of script headers: settings.pl, referer: http://www.foosite.com/foobar/

"Internal Server Error" ではなくエラーを表示するように Perl スクリプトを取得するにはどうすればよいですか?

アップデート:

これについては別の質問をするべきでした。なぜなら、これブラウザにエラーを送信することを知ったからです ( thanks brian ):

use CGI::Carp qw(fatalsToBrowser);

ただし、問題が Perl スクリプトではなく Apache 構成にある場合は、Perl コードが解釈されていないため、エラーはブラウザーに送信されません。この場合、次の行により、(Perl エラーではなく) Apache エラーが発生していることがわかります。

 suexec policy violation: see suexec log for more details

これは、Apache が SUexec モードで実行されている場合に発生します (共有ホスティングでは一般的なようです)。このエラーを引き起こすために正確に何が変更されたのかはわかりませんが、それが私が見つけようとしていることです。

4

4 に答える 4

17

おそらく、共有ホスティングを使用していて、スクリプトディレクトリまたはスクリプトファイルに。以外の権限があるため、この問題が発生します755

これがオランダ語から翻訳された1つのケースです。

于 2010-01-09T15:30:03.680 に答える
7

CGI::Carpを使用しますfatalsToBrowser

 use CGI::Carp qw(fatalsToBrowser);

私のPerl CGI スクリプトのトラブルシューティングも参照してください。

エラー メッセージから、サーバー側のインクルードから CGI スクリプトを実行することは許可されていないと推測されます。Apache のどのバージョンを実行していますか? 古い Apache の場合は、Apache 1.3 の suexecドキュメントを参照してください。新しい Apache の場合は、Apache 2.0 の suexec ドキュメントを参照してください。

于 2010-01-09T14:54:56.133 に答える
2

ユーザーの使いやすさのためではありませんが、多くの場合、ユーザーが何もできない場合に正確なエラーをユーザーに表示しないのは、セキュリティのためです。たとえば、バックエンド サーバーが利用できないとします。Web アプリケーションでこれを修正するには、ユーザーとして何ができますか?

場合によっては、エラー メッセージに「SQL エラー: 無効な構文。一致しない '」などの有用な情報が含まれます。ユーザーが入力に引用符を入力した場合、このフィードバックは SQL インジェクションの脆弱性を示します。

他の無害に見えるメッセージも、ユーザーに表示するのは不適切です。攻撃者が求めている重要なことは、「何か違うことが起こった」ことを知ることです。アプリケーションが 1 つの入力に対して 1 つのエラーを出力し、別の iinput に対して別のエラーを出力した場合、攻撃者は何か別の問題が発生したこと、およびこれが注目すべき興味深い場所であることを認識します。

本番サイトでは、エラーをファイルに記録し、必要に応じて Web インターフェースからダウンロードできるようにする必要があります。また、デバッグと本番の間でこれを再構成するためのユーザー提出オプションがあってはなりません (POST または CGI パラメーターを介して制御するのではなく、構成ファイル オプションによって制御します)。

于 2010-01-09T15:00:58.403 に答える
0

これには、次の 3 つの要因が考えられます。

  1. アクセス許可レベル rwx の設定が間違っています (実行/書き込みレベル)
  2. UUID/GUID が Apache の設定と一致しない
  3. 上記の2つの組み合わせ。

詳細については、apache suexec+errorlog を確認してください

于 2017-08-12T18:38:43.473 に答える