مقالات زیادی در مورد حملات CSRF خواندم تقریبا همه آنها به استفاده از یک رشته تصادفی در فرم برای مقابله با این حملات اشاره کرده اند اما احساس می کنم این ترفند نمی تواند کاملا امن باشد. بعنوان مثال هکر می تواند صفحه زیر را بسازد و کاربر را ترقیب به مشاهده آن کند:



<body onload="document.getElementById('frm1').submit();" >


<script>
function1(request='http://mainsite.com/show_form.php')
{
// codes
}
</script>
<form action="http://mainsite.com/submit_form.php?action=delete" method="post" id="frm1">
<input name="id" value="2" type="hidden" />
<script>document.write('<input name="token" type="hidden" value="' + function1() + '" />");</script>
</form>



function1 در این مثال چیزی شبیه به file_get_contents() در php است با این تفاوت که الگریتمی دارد که می تواند مقدار token فرم را از کد html صفحه سایت اصلی بدست آورد. با این مثال هکر مقدار token را در اختیار دارد و ممکن است بتواند حمله را با موفقیت انجام دهد.

به نظر شما راهکار چیست؟