##はじめに
本記事でやること
・フォーム入力用のHTML画面を簡単に作って、フォームデータを受け取るプログラムの作成
・エスケープ処理とは
・【セキュリティ】 クロスサイトスクリプティングとは
##フォームデータを受け取るプログラム
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>Document</title>
</head>
<body>
<form method="post" action="php7.php">
好きな食べ物は?<input type="text" name = "food1"><br>
好きな飲物は?<input type="text" name="food2">
<input type="submit" value="送信">
</form>
</body>
</html>
httpメソッドをpost指定し、受け渡しのファイル名をactionに記載(php7.phpのファイル名は適当です)
<form method="post" action="php7.php">
phpプログラムの作成
<?php
header('Content-type: text/html; charset=UTF-8');
?>
<html>
<body>
<?php
$f1 = $_POST['food1']; //連想配列でデータを取得
$f2 = $_POST['food2']; //連想配列でデータを取得
$f1 = htmlspecialchars($f1,ENT_QUOTES,'UTF-8');
$f2 = htmlspecialchars($f2,ENT_QUOTES,'UTF-8');
echo 'あなたは「', $f1, '」が好きなんですね<br>';
echo 'あなたは「', $f2, '」が好きなんですね<br>';
?>
</body>
</html>
送信ボタン押したら、phpファイルで受け取りができるようになりました!
html
php7.php
エスケープ処理
最初は、下記コードの意味をわかっていなかったです。
htmlspecialchars
htmlspecialchars関数はHTMLの特殊文字を無効化する処理を行える。
HTMLの特殊記号の例
No | 表示 | 記述方法 | 意味 |
---|---|---|---|
1 | < | < | 小なり |
2 | > | > | 大なり |
3 | & | & | アンパサンド |
4 | " | " | ダブルクォーテーション |
でも、htmlspecialchars関数を呼び出している1番の目的は、セキュリティ
クロスサイトスクリプティングの不正攻撃を防ぐためです。
クロスサイトスクリプティングとは
【下記URLのサイトから抜粋】
クロスサイトスクリプティング(XSS)とは、攻撃対象のWebサイトの脆弱性を突き、攻撃者がそこに悪質なサイトへ誘導するスクリプトを仕掛けることで、サイトに訪れるユーザーの個人情報などを詐取する攻撃のことを指します。
下記URLのサイトは図があり、わかりやすく実際に事例があったことも紹介してくれています。
実務においてセキュリティ知識は必須なので、まだまだ学習が必要と思いました。
#まとめ
・ユーザがサーバにデータを送る方法には、GETとPOSTメソッドがある
・GETメソッドの場合:$_GET , POSTメソッドの場合:$_POSTとすることで連想配列を参照することができる。
・クロスサイトスクリプティング攻撃を防ぐ為にHTML出力をエスケープすることが大事
・ユーザから送信されたデータをそのまま表示しない