ウェブマスターとして、リスクのあるスクリプトを特定する必要があります。
私は常にユーザ入力をフィルタするPHPコードを書いています。私は決してユーザーの入力を信頼し、有効な文字を選んではいけない(vs一部を拒否する)、PHP固有のフィルタリング機能(filter_input
)を使用するか、lib/frameworksユーティリティを使用する。
今日、私はダウンロードしたモジュール内のセキュリティ上の欠陥を検索し、このコードを発見された:
if (isset($_GET['css_file_name'])) {
$cssFileName = _PS_MODULE_DIR_ . DS . "xxxx" . DS . "css" . DS . $_GET['css_file_name'] . ".css";
echo file_get_contents($cssFileName);
}
echo "";
私はそれが安全ではないと思う、それはユーザの入力を信用決して基本的なルールを尊重していません。 私はそれを証明することにしました.DELUX文字を追加して.css
を削除しようとしましたが、任意のファイル(たとえば、資格情報を持つPHPファイル)を見つけることができますが、成功しませんでした。
だから私の質問です:このコードは本当に安全ではありませんか?これでPHPファイルをつかむことが可能です(あなたがそれを証明することができますか?)
私たちが悪用を思いつくことができないなら、それは安全ですか?あなたの質問は面白いですが、セキュリティはもっと考え方であり、安全かどうかは疑問です。これは、安全であることを証明することが難しいため、ホワイトリストがこのケースでは適切であるという明確な兆候です。 – martinstoeckli