ブラウザから Web サーバーに送信されるデータは、簡単に改ざんすることが可能です。hidden 項目は表示されない項目ですが、ユーザーに見えないからといって改ざんされない訳ではありません。Cookie も改ざん可能です。
ですので、改ざんされて問題のある情報、例えば商品の価格などはブラウザで情報を持ってはいけません。改ざんされて問題がある情報は、Webサーバー上に持つようにしましょう。
ブラウザで持つデータと Web サーバーで持つデータの違いは以下の記事を参照してください。
ここで、ブラウザの情報が改ざん可能といっても、今ひとつ実感がわかないと思いますので、Fiddler を使用してブラウザから送信される情報を実際に改ざんしてみましょう。Fiddler の基本は以下の記事を参照してください。
非常に単純な hidden 項目を送信する画面(send.php)と、送信された情報を表示する画面(receive.php)の2つを PHP で作成します。
・send.php
<html>
<body>
<form action=”receive.php” method=”post”>
<input type=”hidden” name=”name” value=”yamada”>
<input type=”submit” value=”送信する”>
</form>
</body>
</html>
・receive.php
<?php
$name = $_POST[‘name’];
?>
<html>
<body>
<h1>こんにちは、<?php echo $name ?>さん</h1>
</body>
</html>
これを実行すると、以下のようになります。
ここで Fiddler を起動して、Rules >> Automatic Breakpoints >> Before Requests を選択します。
この状態で、もう一度 send.php から送信すると、Fiddler で通信がストップします。また、リクエストボディの POST のパラメータが name=yamada となっていることも分かります。
この name=yamada となっている部分を、name=sato と書き換えて、Resume ボタンをクリックします。
すると、hidden 項目で値が yamada だったものが、sato に書き換わっています。
このようにブラウザの情報は簡単に改ざんすることができることが分かります。
- ブラウザの情報は簡単に改ざん可能
- 重要情報はブラウザに持たない
参考
Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。
コメント