PHPでフォームを作成しています。
シンプルに、index.php から申し込んで thansk.php でメッセージと確認メールの送信を行っています。
ただ現在の状態だと、リロードなどは対策を行ったのですが、thanks.phpから戻るボタンで戻った際に、申し込んだ内容がそのまま残っていて、再度申し込みボタンを押すと簡単に申し込みが行えてしまいます。
こういった場合にはどのような対策をとったらよいでしょうか?
sessionとかcookie云々といった内容も見かけたので、これらを破棄したり色々試してみたのですが、効果は無く、この辺りは関係が無さそうでした。
お詳しい方いらっしゃいましたら、アドバイス頂けないでしょうか。
宜しくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
そのフォームには CSRF の脆弱性があると推測されます
https://www.ipa.go.jp/security/vuln/websecurity- …
悪意ある外部からの攻撃なり、ご提示のような単純な操作ミスなりで、
予期しない処理が起きてしまうのは問題ですので対策しましょう。
上記解説ページに根本的解決 6-(i)-a として挙げられている秘密情報が今回の対策となると思います。
例)
index のフォームに一度しか使えない秘密情報を埋め込み
thanks の処理前に秘密情報を検証する
秘密情報が正しければ入力を受理し、不正なら弾く
一度しか使えないので「再度申し込みボタンを押す」は不正として弾く
具体的な実装ポイントとしては、
* 秘密情報は <input type=hidden> で埋め込み
* 秘密情報の検証は、セッション情報に保管しておいた値と比較
* 検証したらセッション情報から削除して、一度しか使えない条件を守る
No.2
- 回答日時:
こんにちは
loadイベントで、入力要素をクリアすればできるのではと思いましたが、最近の fx では HistryBack の際には load イベントが発生しないようですね。(Chromeでは発生しますけれど・・)
以下、ご参考までに・・
簡単に試してみただけですが、windowの pageshow イベントが使えそうな気がします。
https://developer.mozilla.org/ja/docs/Web/API/Wi …
MDNによれば「タブ移動でも発生する」とありますが、少なくともchrome、fxでは発生しないようです。
(タブ移動でクリアされても困るでしょうから・・)
とは言え、各種ブラウザ、スマホで確認してたわけではありませんので、質問者様の方でご確認なさってください。
もう少し確実に行うなら、送信の記録を残しておけばよさそうですね。
1)送信時にcookie等に送信日時を記録する。
2)pageshowイベントで、cookieを読み込み送信記録があれば入力値と送信記録をクリアする。
こちらの場合は、入力中にリンクや直接入力などで他ページへ飛んで、Backで戻れば、入力中の値は保持されている状態になると思います。(送信を行っていないので・・)
有難うございます。
貴重な情報有難うございます、pageshowのイベントなるものを知りませんでした。
関連して、eventのpersisted プロパティというもの、このようなものがあるのかと…。
色々と試してみたいと思います。
※sessionとcookieはthanks.php側で破棄しているのですが…。TT
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- JavaScript 助けてください!スパムメールがとんでもなく大量に届きます。 3 2023/08/10 16:32
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- 消費者問題・詐欺 ラムドレミという副業サイト?がありLINE追加をしたのですが スキドレミやユルドレミなど似たような名 1 2022/11/06 21:36
- その他(メールソフト・メールサービス) 大阪市プレミアム付き商品券のweb申し込みで楽天モバイルのEメールだと返信メールが届かない 2 2022/09/19 17:08
- PHP 「teratail」での回答内容がいまいちわかりません。 1 2022/09/10 05:05
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
フォームへの前回入力値をクリアーする方法は?
PHP
-
戻ると、記入フォームの内容が消えるのはなぜ?
HTML・CSS
-
フォームでのリセットを使う方法
PHP
-
-
4
ページ移動した場合の、フォームデータの保持
PHP
-
5
$_POST['hoge']のデータをフラッシュするには
PHP
-
6
HTMLで前の画面に戻る時、入力していた値が消えてしまいます。
PHP
-
7
FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい
その他(プログラミング・Web制作)
-
8
フォーム送信後の更新ボタンでも$_POST変数が初期化されない
PHP
-
9
Javascript_submit()完了後に処理したい
JavaScript
-
10
html selectの内容を初期値に戻す
JavaScript
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームで戻った際に入力済み...
-
phpの中でphpを書けないか
-
header(Location:~)で$_SESS...
-
*.php、*.php3、*.phtmlの違い
-
readfile関数はIE以外のブラウ...
-
.htaccessのURL書き換えができ...
-
<a href="aaa.php" で、aaa.php...
-
PHP実行でメール送信してメーラ...
-
phpでバッチ組めますか?
-
.htaccessにphp_valueが使用できな
-
テキストエリアの内容がメール...
-
メレンゲの歴史
-
不倫、浮気相手の立場の本
-
apache・phpが起動しない・・・
-
ログイン判定後の画面遷移について
-
Apacheの設定ファイルにPHPの設...
-
php.iniが認識されません
-
ダイハツ・タント・カスタムの...
-
PHP PDOライブラリが読み込まれ...
-
PHPファイルが表示されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.htaccessにphp_valueが使用できな
-
<A href ~ と一緒に値を渡すには
-
フォームで戻った際に入力済み...
-
HYのAM11:00のラップの部分の歌...
-
phpの中でphpを書けないか
-
require_once()でファイルが読...
-
PHPからMSSQLへの接続結果の文...
-
PHPINFOが見えない
-
<大至急!>ご教授願います。
-
テキストエリアの内容がメール...
-
Apache 2.4.0でphp5.3を使うには?
-
メレンゲの歴史
-
*.php、*.php3、*.phtmlの違い
-
これの対応OSを教えて下さい。p...
-
PHPで別PHPを呼び出す。
-
header(Location:~)で$_SESS...
-
PHP PDOライブラリが読み込まれ...
-
apache・phpが起動しない・・・
-
iframeで読み込んだ別のphpファ...
-
服にかいた油性ペンがにじまな...
おすすめ情報