質問 > フロント機能 > CSRFトークンについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yuy-tank |
投稿日時: 2019/4/11 11:13
対応状況: 開発中
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
CSRFトークンについて ECCUBEの本体を見ると、フォームが用意されているページでは、テンプレート側にCSRFトークンが埋め込まれておりますが、コントローラー側では、isTokenValid()をしているページとしていないページがあります。
これについて、明示的にisTokenValid()を行わなくても、CSRFトークンの判定をしてくれていると解釈していますが、明示的に行うのはどういった時なのでしょうか? |
nyorai |
投稿日時: 2019/4/11 15:39
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: CSRFトークンについて フォーム(FormType)を利用しているコントローラでは、
if ($form->isSubmitted() && $form->isValid()) { // } のような記述があると思いますが、通常は$form->isValid()でcsrfトークンのチェックが行われます。 $this->isTokenValid()を利用しているのは、例えば会員の削除処理など、フォーム(FormType)を使用しない箇所ですね。 https://github.com/EC-CUBE/ec-cube/blob/3.0/src/Eccube/Controller/Admin/Customer/CustomerController.php#L191 こういった箇所ではisTokenValid()で明示的にチェックしています。 |
yuy-tank |
投稿日時: 2019/4/11 22:31
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: CSRFトークンについて そういうことなんですね。納得いたしました。
わかりやすく説明していただき、ありがとうございました。 |
yuy-tank |
投稿日時: 2019/4/12 14:37
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: CSRFトークンについて 申し訳ありません。追加で質問があります。
isTokenValid()を使用しているページでは、テンプレート側に以下の記述があります。
これは、展開すると、token-for-anchor = " ********** " (トークン値) となるわけですが、isTokenValid()を実行する際に、この属性token-for-anchorを一体どこで拾っているのでしょうか?どうか教えてください。 |
umebius |
投稿日時: 2019/4/13 18:26
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: CSRFトークンについて token-for-anchor = " ********** "
はその名の通り、アンカータグ(リンク)につけるためのものです。 このリンクをクリックしたタイミングで、javascriptの下記の部分で「_token」というパラメーターを加えたフォームが擬似的に生成されデータを送信します。 https://github.com/EC-CUBE/ec-cube/blob/3.0.17/html/template/default/js/function.js#L359
|
yuy-tank |
投稿日時: 2019/4/15 12:05
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: CSRFトークンについて なるほど、javascriptで_tokenというパラメータを生成していたのですね。盲点でした。解凍して頂き、ありがとうございました。
|
umebius |
投稿日時: 2019/4/21 9:16
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: CSRFトークンについて そうですね、結構javascriptが使われていて盲点になっています。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |