Insecure PHP Programming
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
脆弱性のあるログインフォーム の解説です。ソースコードをまだ見られていない方は、まず、脆弱性のあるログインフォーム をご覧ください。
すでにコメントでほぼ明らかになっていますが、このコードの二つ目の脆弱性は、
の $_SERVER['PHP_SELF'] をそのまま表示していることです。$_SERVER['PHP_SELF'] は 現在実行しているスクリプトのファイル名ですが、この値には PATH_INFO も含まれます。 例えば、URL に「http://localhost/this.php/%22%3E%3Cscript%3Ealert('xss')%3C/script%3E%3Ca%20name=%22a」と入力すると、この form タグは、
となります。 実際にやってみるとすぐにわかりますが、この時、警告ダイアログがブラウザの画面に表示されます。入力した JavaScript のコードがブラウザで実行されていることがわかります。 これで、ユーザが自由に JavaScript コードをページに埋め込むことができることがわかります。これも、クロスサイトスクリプティング(XSS)脆弱性です。 ログインフォームの脆弱性(3) へ続く。 PR
よくあるメール送信フォームです。
このフォームを使い迷惑メールを送ってみてください。
なお、表示の関係でソースコード中の textarea タグを textarea_ としています。
ログイン済みのユーザのみアクセスできるページの処理です。ログインしているかどうか判定する関数 loggedin() の中身は省略しています。ログインしていないユーザはログインページにリダイレクトします。
このコードのどこが問題でしょうか?
このブログの対象読者を書いていませんでした。
このブログの対象読者は「PHP初心者〜」です。なので、PHP初心者の方も含まれています。初心者からの疑問やコメントなども歓迎します。
脆弱性のあるログインフォーム の解説です。ソースコードをまだ見られていない方は、まず、脆弱性のあるログインフォーム をご覧ください。
すでにコメントでほぼ明らかになっていますが、このコードの脆弱性のひとつは、 ユーザ名: <input type="text" name="username" value="<?php echo $_POST['username']; ?>"><br> の $_POST['username'] をそのまま表示していることです。$_POST['username'] はユーザが POSTメソッドで送信した usernameフィールドの値ですね。 例えば、ユーザ名に「"><script>alert('xss')</script><a name="a」と入力すると、この inputタグは、 <input type="text" name="username" value=""><script>alert('xss')</script><a name="a"> となります。 実際にやってみるとすぐにわかりますが、この時、警告ダイアログがブラウザの画面に表示されます。入力した JavaScript のコードがブラウザで実行されていることがわかります。 これで、ユーザが自由に JavaScript コードをページに埋め込むことができることがわかります。これは、典型的なクロスサイトスクリプティング(XSS)脆弱性です。 これが何故、危険かわからない人がいましたら、コメントにその旨ご記入ください。 続きは、ログインフォームの脆弱性(2) |
カレンダー
カテゴリー
最新記事
(11/21)
(11/13)
(11/13)
(11/09)
(11/06)
最新トラックバック
プロフィール
HN:
Kenji
性別:
非公開
ブログ内検索
|