Insecure PHP Programming
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
脆弱性のあるログインフォーム の解説です。ソースコードをまだ見られていない方は、まず、脆弱性のあるログインフォーム をご覧ください。
この脆弱性を取り除くには、 <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> の部分は、以下のようにするのがよいと思います。 <form method="POST" action=""> あるいは、$_SERVER['PHP_SELF'] を htmlspecialchars() でエスケープ処理する方法もあるかと思います。 <form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>"> また、以下のユーザ名の入力値を表示する部分は、 <input type="text" name="username" value="<?php echo $_POST['username']; ?> 以下のように、htmlspecialchars() でエスケープ処理します。 <input type="text" name="username" value="<?php echo htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8'); ?> htmlspecialchars() でエスケープ処理する場合は、必ず、第2引数に ENT_QUOTES を指定しましょう。デフォルトでは、シングルクオート(')がエスケープされませんので、シングルクオートでインジェクションできるケースでは脆弱性が残る可能性があります。 PR
このブログの目的は、意識的に、自由自在に、効率的に、安全でない(脆弱性のある) PHPプログラムを作成できるようになることです。
無意識に脆弱性のあるプログラムを作るという状態がなくなることを目指しています。意識的に脆弱性を入れられるようになれば、今までと同じ作業時間でも多くの脆弱性を作れるようになるでしょう。 そのような状態になれれば、脆弱性は、すべて意識されたものとなります。もし望むなら、脆弱性のない安全なプログラムを作ることもできるでしょう。そんなことを望む人がいるかどうかはわかりませんが。(笑) ただし、そのような状態になるのは、正直言って簡単ではありません。
脆弱性のあるログインフォーム の解説です。ソースコードをまだ見られていない方は、まず、脆弱性のあるログインフォーム をご覧ください。
補足ですが、コメントにあったように URL を http://localhost/this.php?username=%22%3E%3Cscript%20type= のように入力したとしても、このログインフォームでは、クロスサイトスクリプティングはできません。実際にそのように入力しても警告は表示されません。 これは、username の表示に、 $_POST['username'] と $_POST を使っているために、GETリクエストで値を送信しても無視されるためです。これを上記のように GET でも攻撃可能にするには、$_POST を $_REQUEST に変更すれば ok です。具体的には、 ユーザ名: <input type="text" name="username" value="<?php echo $_REQUEST['username']; ?>"><br> です。 こうすれば、inputタグは、以下のようになり、スクリプトが実行可能になります。 <input type="text" name="username" value=""><script type="text/javascript">alert('xss')</script><a name="a"> ログインフォームの脆弱性(4) へ続く。
いろいろコメントが付くようになったのですが、このブログサービスでは、コメントを記入されるとき、タイトルを入れないと「無題」と付くようです。
ということで、タイトルを入れないと全部「無題」で新しいコメントかどうかの区別が付きにくいです。 コメントをご記入の場合は、できるだけ何かタイトルを入れるようにお願いします。
exec()関数で、外部コマンドを実行しています。OSコマンドインジェクションを防ぐために「"」をエスケープしています。
どこが脆弱でしょうか?
次のページ>>
|
カレンダー
カテゴリー
最新記事
(11/21)
(11/13)
(11/13)
(11/09)
(11/06)
最新トラックバック
プロフィール
HN:
Kenji
性別:
非公開
ブログ内検索
|