1
0

More than 3 years have passed since last update.

【PHP学習_備忘録】 フォームデータを配列で受け取る,クロスサイトスクリプティングとは

Posted at

はじめに

本記事でやること
・フォーム入力用のHTML画面を簡単に作って、フォームデータを受け取るプログラムの作成
・エスケープ処理とは
・【セキュリティ】 クロスサイトスクリプティングとは

フォームデータを受け取るプログラム

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プログラムの作成

php7.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

image.png

php7.php

image.png

エスケープ処理

最初は、下記コードの意味をわかっていなかったです。

htmlspecialchars

htmlspecialchars関数はHTMLの特殊文字を無効化する処理を行える。

HTMLの特殊記号の例

No 表示 記述方法 意味
1 < < 小なり
2 > > 大なり
3 & & アンパサンド
4 " " ダブルクォーテーション

でも、htmlspecialchars関数を呼び出している1番の目的は、セキュリティ
クロスサイトスクリプティングの不正攻撃を防ぐためです。

クロスサイトスクリプティングとは

【下記URLのサイトから抜粋】
クロスサイトスクリプティング(XSS)とは、攻撃対象のWebサイトの脆弱性を突き、攻撃者がそこに悪質なサイトへ誘導するスクリプトを仕掛けることで、サイトに訪れるユーザーの個人情報などを詐取する攻撃のことを指します。

下記URLのサイトは図があり、わかりやすく実際に事例があったことも紹介してくれています。

実務においてセキュリティ知識は必須なので、まだまだ学習が必要と思いました。

まとめ

・ユーザがサーバにデータを送る方法には、GETとPOSTメソッドがある
・GETメソッドの場合:$_GET , POSTメソッドの場合:$_POSTとすることで連想配列を参照することができる。
・クロスサイトスクリプティング攻撃を防ぐ為にHTML出力をエスケープすることが大事
・ユーザから送信されたデータをそのまま表示しない

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0