こんにちは、さるまりんです。
前回は、
フォームから値を送る方法として、
GET と POST を見てきました。
フォームから送った値を、
PHPで受け取れるようになりましたね。
今回は、
最後にちょっとだけ、
セキュリティの話をしたいと思います。
Webページでは、
外から値を受け取ることがあります。
そんなときに覚えておきたいのが、
受け取った値が、いつも思った通りのものとは限らない
ということです。
入力されるのは名前だけとは限らない
例えば、
名前を入力するフォームがあったとします。
<form method="post">
<input type="text" name="name">
<button type="submit">送信</button>
</form>
こちらとしては、
ゴリラ
のような名前を入力してもらうつもりかもしれません。
でも、
フォームには別の文字を入力することもできます。
Webから送られてくる値は、
自分たちが想定したものとは限らないんですね。
そのまま表示しない
例えば、
フォームから受け取った $name を、
HTMLに表示するとします。
<p><?php echo $name; ?></p>
受け取った値をそのままHTMLとして扱うと、
思わぬ動きをしてしまうことがあります。
そんなときに使える関数のひとつが、
htmlspecialchars() です。
<p><?php echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); ?></p>
HTMLで特別な意味を持つ文字を、
文字として表示できる形に変えてくれます。
まずは、
外から受け取った値を、そのまま表示しない
と覚えておくとよいと思います。
POSTだから安全というわけではない
前回、
GETでは値がURLに見えて、
POSTではURLには並ばないという話をしました。
でも、
POSTを使えば安全
というわけではありません。
GETでもPOSTでも、
外から受け取った値であることは同じです。
送られてきた値は、
必要に応じて確認したり、
安全に扱えるようにしたりする必要があります。
セキュリティにはまだまだあります
Webのセキュリティには、
今回紹介したこと以外にも、
いろいろなことがあります。
データベースを使うようになると、
また別の注意も必要になります。
ログインを作るようになれば、
パスワードの扱いも考えることになります。
全部を今覚える必要はありません。
まずは、
外から来た値を、そのまま信用しない
ということを覚えておきましょう。
今回のまとめ
今回は、
Webアプリを作るときのセキュリティについて、
ほんの少しだけ見てみました。
フォームから受け取った値は、
いつも想定したものとは限りません。
そして、
HTMLに表示するときには、
htmlspecialchars()
のような関数を使って、
安全に扱えるようにすることがあります。
まずは、
外から受け取った値は、そのまま信用しない
という感覚を持っておきましょう。
On to PHP Web版、ここまで!
ここまで、
変数や配列から始まって、
条件分岐、
繰り返し、
関数、
そして、
HTMLやフォーム、
GETとPOSTまで見てきました。
最初は、
echo "Hello, World!";
だったPHPが、
少しずつWebアプリにつながってきましたね。
もちろん、
PHPにはまだまだたくさんのことがあります。
データベースを使ったり、
ログインを作ったり、
クラスを使ったり。
その先にも、まだ道は続いています。
でも、
On to PHP Web版は、
ここでいったん完走です。
ここまで一緒に進んできてくださって、
ありがとうございました。
また別の「On to」で、
続きを一緒に進めていけたらと思います。
それでは、また!
“`