お世話になっております。
この度、クライアントが管理画面よりお客様管理をするサービスを構築中です。
流れとして
1.ログイン
2.ログインアカウントに対応した顧客情報(氏名、住所、TEL)の一覧
3.一覧から行を選択し、その行のデータの編集前⇒編集後(テキストボックス)が表示される画面に移動。
4.変更後の値を入力⇒実行ボタン押下
5.DB更新完了
の様な処理があるのですが、この処理について迷っております。
個人情報を取り扱うので、徹底的にセキュリティ対策したいと思っておりますが、
経験が浅く何をやって良いのかわかりません。
現時点で対策済みなのが、
- XSS対策
- 入力内容からのSQLインジェクション対策
なのですが、CSRF対策をどの処理に対して行えば良いのかが分かりません。
現状考えている流れが以下の通りです。
1.ログインと同時にセッションにユーザー名、トークンを保存
★ 2.ログインアカウントに対応した顧客情報(氏名、住所、TEL)の一覧の画面から編集行を選択
★ 3.編集画面にて値を入力後、実行ボタン押下にて処理実行ファイルに対してトークンを送信する
<form action="処理実行ファイル.php" method="post"> <!-- トークンをPOST --> <input type="hidden" name="token" value="<?=$_SESSION['token']?>"> <button type="submit">実行</button> </form>
◆ 4.トークンが一致するかどうか確認し、OKならDBをUPDATE
5.完了画面表示
★・・・ログインしているかどうか、if ( isset($_SESSION['user_name'] ) { で確認
◆・・・トークンが一致するかどうか、if ( $_POST['token'] === $_SESSION['token'] { で確認
以上の流れで心配なのが、
・②の時点でがっつりと個人情報が一覧表示されるのですが、この時のチェックって
【ログインしているかどうか、if ( isset($_SESSION['user_name'] ) { で確認】
のみで良いのでしょうか?
この時点でのCSRFの危険はないのでしょうか?
④では、トークンが一致する時点で、必ずログインされているはずなので、★のチェックは必要ないかと思い、省略しておりますが、問題ありますでしょうか?
その他にも、脆弱性がありましたらアドバイス頂ければ非常に助かります・・・。
詳しい方、どうかお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/02 13:40