PHPで簡単なCSRF対策
smarty拡張クラスを作る
function smarty_function_csrf_token($params, &$o_smarty){ if(session_id() == ""){ session_start(); } $key = session_id(); return "<input type=\"hidden\" name=\"_csrf_token\" value=\"". $key ."\" />"; }
で、テンプレートで
{csrt_token}
で呼ぶと
<input type="hidden" name="csrt_token" value="session_id" />
CSRF対策したいとこに読み込むクラス
<?php class CSRF { function __construct(){ } function check(){ session_start(); //csrf if($_POST[_csrf_token] !== session_id()){ die( "error" ); exit ; } } } ?>
本当は
暗号化もしたほうがよいか。別に複合する必要も無いんだし。。
デファクトが
あるなら、そっちに変える。