0

私はウェブサイトのこれまでのウェブページにconfig.phpを効率的に含める方法を研究していましたが、stackoverlowで素晴らしい答えを見つけました。

ユーザー「user187291」は、それを含める方法について非常に興味深い回答をし、「裏返し」のアプローチを推奨しました。

$page = isset($_GET['page']) 
   ? preg_replace("/\W+/", "", $_GET['page'])
   : "home";
 include "$page.php";

問題は、なぜ彼はpreg_replaceを使用するのかということです。

4

3 に答える 3

0

preg_replace()関数は、正規表現の最初のパラメーターを受け取り、3番目のパラメーターの2番目のパラメーターと一致するものをすべて置き換えます。

作者は、からの入力をサニタイズしようとしてこれを行っていたと$_GET思います。その値は、信頼するまで信頼してはいけません。

Webアプリケーションのセキュリティに関する質問については、Open Web Application Security Project(OWASP)を参照してください。PHPセキュリティリーディングプラクティスのページとPHPセキュリティチートシートがあります

于 2012-12-02T10:32:02.303 に答える
0

\ Wは、[A-Za-z0-9_]にないすべての文字を検出する(この置換の場合は削除する)ため、ページパラメータを保護します。

于 2012-12-02T10:32:25.640 に答える
0

preg_replacepageは、変数から英数字以外の文字を取り除くために使用されています。

これはセキュリティの非常に薄い試みです。このコードは、インジェクション攻撃を阻止しようとしています。

ユーザーがページhttp://www.example.com/index.php?page=/etc/passwdを要求したかどうかを検討してください。 入力をサニタイズせずに、ドメインのパスワードファイルが画面にダンプされます。

このパターン\W+は、「/」文字などの無効な文字を削除し、このような単純な攻撃を防ぎます。

于 2012-12-02T10:34:06.493 に答える