0

だから私は今、セキュリティの問題に直面しています.スクリプトを安全にするための完璧なアプローチは何かを知りたいです. コードのどこかにこれがあります

$AdditionalPath = preg_replace("/^[A-Za-z0-9._-\/\\]/","",$AdditionalPath);
require $AdditionalPath."../xdata/php/website_config/mysql.php";

$AdditionalPath悪意のあるコードでさえ、すべてである可能性があるため、A-Z a-z 0-9 . / \. 私は正しいですか?また、この正規表現を正しく作成しましたか?

ありがとう!

4

1 に答える 1

1

正規表現の代わりに実パスを使用しない理由:

$file = realpath( $AdditionalPath . "../xdata/php/website_config/mysql.php");
if( is_readable( $file ))
  require $file;

アップデート:

realpath のドキュメントから:

注: 実行中のスクリプトには、階層内のすべてのディレクトリに対する実行権限が必要です。そうでない場合、realpath() は FALSE を返します。

于 2012-10-02T13:07:09.063 に答える