第四週 †フォーム †今週は入力フォームからデータを受け取る方法について扱います。 今週の内容の理解のみでウェブアプリケーションを記述する場合、セキュリティ的な問題が発生する場合があります。 form/get について †htmlで、入力フォームはformタグを使い次のように書きます。 <form action="post_to.html" method="get"> 名前:<input type="text" name="name" /><br /> メールアドレス:<input type="text" name="mail" /><br /> お問い合わせ:<textarea name="inquiry"></textarea><br /> 送信:<input type="submit" /> </form> formタグ内のデータの送信先は、action属性の中で指定します。先ほどのformの例では、 <form action="post_to.html" method="get"> ... </form> したがって、このformタグ内のデータはpost_to.htmlに送信されることになります。 formタグで重要となるのは、action属性と、method属性です。 method属性が取りうる値は"post"か"get"です。 先ほどのformを実際に記述したページを用意しました。 http://y-mahata.s-tanno.com/sample/post_from.html さて、ここでフォームに適当な文字列を入力して送信ボタンを押してください。 アドレスバーに、「http://y-mahata.s-tanno.com/sample/post_to.html」に続いて、 これに対して、 post_to.html のbodyタグ内は次のようになっています。 <?php var_dump($_GET); ?> var_dump は、引数*4の内容をダンプします。 したがって、post_to.html を次のようにすることで、フォームから渡ったそれぞれの値を個別に取得することができます。
実際に上記のプログラムの出力を確かめてみてください。 form/post について †<form action="post_to.html" method="post"> 名前:<input type="text" name="name" /><br /> メールアドレス:<input type="text" name="mail" /><br /> お問い合わせ:<textarea name="inquiry"></textarea><br /> 送信:<input type="submit" /> </form> 先ほどのmethod属性を"get"から"post"に変更すると、データが"post"で渡ることになります。 http://y-mahata.s-tanno.com/sample/post_from2.html で、フォームに適当な文字列を入力して送信ボタンを押してください。 <?php var_dump($_POST); ?> $_GET で送信されたデータを取得できていたのが、$_POST でデータを取得していることに注意してください。 XSS(クロスサイトスクリプティング)について †ウェブサイトでよくある脆弱性の内、最もポピュラーなものの一つがXSSです。 「Cross Site」であるというのは、サイトを跨ぐという意味です。 例として、先ほどのフォームに次の文字列を挿入して「送信」してください。 <script type="text/javascript">alert("XSS!");</script> post_to.html で JavaScript? が実行されたことが確認できたでしょうか。 この手の脆弱性を解消するための手段は次週で扱います。 宿題 †
|