串接金流後...想找些避免被有心人士誤用的頁面稽核機制,除了原有的那些措施之外,有文章推薦可啟用在 CI 2.0的 csrf(Cross Site Request Forgery) protection 功能。
設定 application\config\config.php將csrf打開
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
接著在View中如果有需要提交的Form則使用form_open(action, variable array)來寫就會直接產生相關的Code,真方便。
不過...如果有接收金流的Return Url時,會出現不給接收的Message(謎之聲~當然因為金流公司不會送相關的稽核Code過來。
解法:
設定 application\config\config.php中改寫為
if (stripos($_SERVER["REQUEST_URI"],'controler name/function name') === FALSE) {
$config['csrf_protection'] = TRUE;
else
$config['csrf_protection'] = FALSE;
這樣就能有例外情況了。
另外如果不想使用form_open()要手動來的話~找到的範例如下。
$(function(){
$('#btn').click(function(){
$.ajax({
type:'POST'
,url:'/ajax' //ajax接收的server端
,data:$('#form').serialize()+'&csrf_test_name='+ getCookie('csrf_test_name')
,success:function(data){
alert(data.msg);
}
,dataType:'json'
});
});
});
function getCookie(name){
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}
沒有留言:
張貼留言