【 PHP学習 #17 】 セキュリティ 「クリックジャッキング対策」 FIREへの旅路 ♯467
セキュリティの第2段は、「クリックジャンキング」です。
【 クリックジャッキング 】
問い合わせフォームの「送信」ボタンの上に、透明なボタンを設置して、ユーザーがクリックすると、意図しないWEBサイトへリンクされてしまうなどの攻撃が予想されます。
▶︎ 対策
クリックジャッキングは、IframeというHTMLの機能を使って行われます。
X-FRAME-OPTIONSを含めることで、そのウェブページを他のサイトのページのiframeに呼び出さないようにウェブブラウザに指示することができます。
iframe
▶︎ 書き方
header('X-FRAME-OPTIONS:DENY');
このコードは、ヘッダー関数と呼ばれます。
ヘッダー関数は、ファイルの一番上(ヘッダー)に書きます。
<?php
header('X-FRAME-OPTIONS:DENY');
//スーパーグローバル変数
//if ( !empty( $_POST ) ) {
//
// echo '<pre>';
//
// var_dump( $_POST );
//
// echo '</pre>';
//
//}
function h($str){
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
//入力=0、確認=1、完了=2
//表示する内容を切り替える条件を設定する
$pageFlag = 0;
if(!empty($_POST['btn_confirm'])){
$pageFlag = 1;
}
if(!empty($_POST['btn_submit'])){
$pageFlag = 2;
}
?>
<!DOCTYPE html>
<meta charset="utf-8">
<head>
</head>
<body>
<!--入力画面-->
<?php if($pageFlag === 0) : ?>
<form method="POST" action="input.php">
氏名
<input type="text" name="your_name" value="<?php if(!empty($_POST['your_name'])) {echo h($_POST['your_name']);} ?>">
<br>
メールアドレス
<input type="text" name="email" value="<?php if(!empty($_POST['email'])) {echo h($_POST['email']);} ?>">
<br>
<input type="submit" name="btn_confirm" value="確認する">
</form>
<?php endif; ?>
<!--確認画面-->
<?php if($pageFlag === 1) : ?>
<form method="POST" action="input.php">
氏名
<?php echo h($_POST['your_name']);?>
<br>
メールアドレス
<?php echo h($_POST['email']);?>
<br>
<!--戻るボタン-->
<input type="submit" name="back" value="戻る">
<!--送信ボタン-->
<input type="submit" name="btn_submit" value="送信する">
<input type="hidden" name="your_name" value="<?php echo h($_POST['your_name']);?>" >
<input type="hidden" name="email" value="<?php echo h($_POST['email']);?>" >
</form>
<?php endif; ?>
<!--完了画面-->
<?php if($pageFlag === 2) : ?>
送信が完了しました
<?php endif; ?>
</body>
</html>
これだけで完了です!!
【 まとめ 】
クリックジャッキング対策について学びました。
これはもう書き加えると覚えておいた方がいいでしょう!!
この記事が気に入ったらサポートをしてみませんか?