カテゴリ: PHP 更新日: 2025/12/10

PHPのhiddenフィールドとは?初心者でもわかる使い方とセキュリティ対策をやさしく解説!

PHP の hidden フィールドとセキュリティ対策
PHP の hidden フィールドとセキュリティ対策

先生と生徒の会話形式で理解しよう

生徒

「PHPでフォームを作ってるときに、hiddenっていう項目を見たんですけど、これは何に使うんですか?」

先生

「それは、画面には表示されないけど、データとして送信するための入力項目なんだよ。」

生徒

「え、表示されないのに使うんですか?それって安全なんですか?」

先生

「うん、それが大事なポイントなんだ。便利だけど注意しないとセキュリティのリスクもあるんだよ。一緒に見ていこう!」

-

1. hiddenフィールドとは?画面に表示しないけど送信される情報

1. hiddenフィールドとは?画面に表示しないけど送信される情報
1. hiddenフィールドとは?画面に表示しないけど送信される情報

PHPでフォームを作るときに使えるhidden(ヒドゥン)フィールドは、「画面には表示しないけれど、フォーム送信時に一緒にサーバーへ送られるデータ」を保存するためのものです。

たとえば、商品のIDやユーザーの識別番号など、ユーザーが変更しないで送ってほしい情報を入れるときに使います。

以下はその例です。


<form action="confirm.php" method="post">
    <input type="hidden" name="product_id" value="12345">
    <input type="submit" value="購入する">
</form>

このように書くと、画面には「購入する」ボタンしか見えませんが、実際にはproduct_id=12345という情報も一緒に送られます。

2. hiddenフィールドが使われる具体例

2. hiddenフィールドが使われる具体例
2. hiddenフィールドが使われる具体例

初心者にもわかりやすくするために、具体例を見てみましょう。

例えばショッピングサイトで、「カートに入れる」ボタンを押したときに、商品IDや数量などの情報をこっそり送るためにhiddenフィールドが使われます。


<form action="cart.php" method="post">
    <input type="hidden" name="item_id" value="A1001">
    <input type="hidden" name="quantity" value="1">
    <input type="submit" value="カートに入れる">
</form>

このようにすると、ユーザーが意識しないところで必要なデータを送ることができます。

3. でも注意!hiddenフィールドは誰でも見えるし変更できる

3. でも注意!hiddenフィールドは誰でも見えるし変更できる
3. でも注意!hiddenフィールドは誰でも見えるし変更できる

ここで大事な注意点です。hiddenフィールドは「画面に表示されない」だけで、パソコンに詳しい人なら簡単に中身を見ることができて、値を変更することもできます。

たとえば、上の例のquantityを「1000」に変えて送信すれば、1000個の注文をサーバーに送れてしまうのです。

これはセキュリティの問題になります。

Google Chromeなどのブラウザで「検証ツール(けんしょうツール)」を使えば、HTMLの中身はすぐに見れてしまいます。

4. PHPでhiddenフィールドの値を信用しないことが重要

4. PHPでhiddenフィールドの値を信用しないことが重要
4. PHPでhiddenフィールドの値を信用しないことが重要

サーバー側(PHPのプログラム側)では、hiddenフィールドの値をそのまま信用してはいけません。なぜなら、ユーザーが値を勝手に変更しているかもしれないからです。

たとえば、商品の価格や割引情報などをhiddenフィールドで送って、それをPHP側でそのまま使ってしまうと、不正注文が可能になってしまいます。

安全にするためには、サーバー側で「この値は本当に正しいか?」を確認する処理が必要です。

-

5. セッションやデータベースで確認しよう

5. セッションやデータベースで確認しよう
5. セッションやデータベースで確認しよう

安全にするには、hiddenフィールドに商品IDだけを入れておき、PHP側でその商品IDに対応する正しい価格や情報を、データベースから読み込んで処理する方法がおすすめです。


session_start();

$product_id = $_POST['product_id'];

// データベースから価格などを取得(ここでは仮の関数)
$product_info = getProductFromDB($product_id);

$price = $product_info['price'];

このようにすれば、ユーザーがhiddenの値を変更しても意味がなくなり、セキュリティも高まります。

6. ワンタイムトークンで不正送信を防ぐ

6. ワンタイムトークンで不正送信を防ぐ
6. ワンタイムトークンで不正送信を防ぐ

さらにセキュリティを強化するために、「ワンタイムトークン(トークン:使い捨てのカギ)」をhiddenフィールドに入れて、サーバー側でチェックする方法もよく使われます。

これにより、他人が勝手にフォームを真似して送っても、正しく処理されません。

例えば、ログイン中のユーザー専用のトークンをセッションに保存しておき、フォーム送信時に一致するかどうかを確認します。

7. hiddenフィールドは便利だが、使い方を間違えると危険

7. hiddenフィールドは便利だが、使い方を間違えると危険
7. hiddenフィールドは便利だが、使い方を間違えると危険

まとめると、PHPのhiddenフィールドは、ユーザーに見せずにデータを送信したいときに便利な機能です。

でも、パソコンに詳しい人なら中身を見たり変更したりできるので、セキュリティ対策をしないと危険です。

サーバー側で正しいかどうかを確認したり、ワンタイムトークンで不正送信を防いだりすることが大切です。

まとめ

まとめ
まとめ

PHPでフォームを扱うときに重要になるhiddenフィールドは、画面には表示されないにもかかわらず、サーバーへ確実にデータを送信できる便利な仕組みです。商品IDやユーザー識別番号のように、ユーザーに触れさせたくない情報を自然に送れるため、ショッピングサイトや予約フォームなど幅広い場面で活用されています。 しかし、このhiddenフィールドはあくまで「見えないだけ」であって、「安全なもの」ではありません。ブラウザの検証ツールを使えばすぐに値を変更できてしまうため、PHP側でその値を鵜呑みにすると不正注文や情報改ざんといった問題を引き起こします。 そのため、hiddenフィールドを使うときには、必ずサーバー側でデータの正しさを確認する仕組みが必要になります。商品情報をデータベースから再取得したり、セッションと照らし合わせて正当性を確かめたりするのが基本です。さらに、一度きりのワンタイムトークンを使えば、外部から偽造されたフォーム送信も防止できます。 初心者のうちは、hiddenフィールドをただ便利だからと適当に使ってしまいがちですが、正しい使い方を理解することで、安全性の高いPHPフォームを作れるようになります。特にショッピングカート、ユーザー情報管理、予約システムなどの開発では必須の考え方になるため、この段階でしっかり身につけておくことが将来のスキルアップにもつながります。

hiddenフィールドを使った安全なサンプルコード

以下は、hiddenフィールドとセッションを併用して安全性を高める例です。

    
<form action="check.php" method="post">
    <input type="hidden" name="product_id" value="A2005">
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
    <button type="submit">確認画面へ進む</button>
</form>
    
    

サーバー側では、トークンが一致するかどうかを必ずチェックします。

    
session_start();

if ($_POST['token'] !== $_SESSION['token']) {
    die("不正なアクセスです。");
}

$product_id = $_POST['product_id'];
$product = getProductInfoFromDB($product_id);
    
    

このようにhiddenフィールド単体ではなく、必ずPHPのセッションやデータベースと組み合わせることで、安全な入力フォームが実現できます。 フォーム送信というと見た目のHTMLに意識が向きがちですが、裏側のチェックこそがWebアプリケーションの安定性を支える重要な要素です。hiddenフィールドは便利な反面、扱い方を誤ると危険が伴うため、今回学んだポイントをしっかり押さえて活用していきましょう。

先生と生徒の振り返り会話

生徒

「hiddenってただの見えない項目だと思ってたんですが、もっと奥が深かったんですね……。値が見られるし変更できるっていうのは驚きです。」

先生

「そうだね。見えないから安全だと考える人は多いけれど、実際はHTMLの一部だから簡単に書き換えられてしまうんだ。だからPHP側でのチェックが大事なんだよ。」

生徒

「ワンタイムトークンっていう仕組みも便利ですね。偽造の送信を防げるなんて、まるで秘密鍵みたいです。」

先生

「まさにそう。hiddenフィールド、セッション、トークン、この三つを組み合わせると、初歩のPHPでもかなり安全なフォームが作れるようになるよ。」

生徒

「今日の内容で、フォームのセキュリティがどれだけ重要かよく分かりました!これからは設計の段階でしっかり考えるようにします!」

先生

「うん、その意識がとても大事だよ。安全なフォームを作れるようになれば、PHPでできることはどんどん広がっていくからね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのhiddenフィールドって何ですか?初心者でもわかりやすく説明してください。

hiddenフィールドとは、HTMLフォームに表示されないけれど、データとしてサーバーに送信される入力項目です。画面上では見えませんが、フォーム送信時に一緒にPHPで受け取れます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
No.7
Java&Spring記事人気No7
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.8
Java&Spring記事人気No8
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
-
-