HTML form without CSRF protection

این حمله (Cross-Site Request Forgery) زمانی اتفاق می افتد که وب سایت، ایمیل، بلاگ، چت و یا برنامه مخربی، کاربر را از یک سایت مورد اعتمادی که کاربر در آن اعتبار سنجی شده و داخل آن می باشد در همان زمان مجبور به انتقال به وب سایت دیگری کند. تاثیر حمله وابستگی بسیاری به آسیب پذیری افشا شده دارد که برای مثال می توان به تراکنش های مالی، تغییر رمز عبور اشاره نمود.

پیشنهادات در جهت جلوگیری از حمله
یکی از راه حل های عمومی، استفاده از الگوی رمز (Token Pattern) می باشد. در هر درخواستی می بایست این الگوی رمز در یک فیلد پنهان قرار داده شده و به سرور فرستاده شود.

<form action=”/transfer.do” method=”post”><input type=”hidden” name=”CSRFToken” value=”OWY4NmQwODE4ODRjN2Q2NTlhMmZlYWEwYzU1YWQwMTVhM2JmNGYxYjJiMGI4MjJjZDE1ZDZjMTVi MGYwMGEwOA==” /> …</form>

این مقدار می بایستی در هر session تولید شده و منحصر به فرد باشد تا توسط هکر حدس زده نشود که برای مثال می توان از کلاس جاوا java.security.SecureRandom استفاده نمود و همچنین می توان از الگوریتم جایگزینی همانند bit-256 encoded hash نیز استفاده کرد

ViewState – ASP.NET
ASP .NET گزینه ای در جهت ذخیره ViewState دارد که در هر فرم داخل یک فیلد پنهان قرار می گیرد و توسط <form runat=”server”> کنترل می شود

تایید مضاعف کوکی
این نوع تایید به حالتی گفته می شود که session ID را به دو صورت مختلف ارسال نماییم: اولین روش ارسال آن از طریق header value می باشد و مجددا در یک فیلد پنهان ارسال گردد. زمانی که درخواست به سرور POST می شود آن درخواست زمانی معتبر است که مقدار فیلد پنهان فرم و مقدار کوکی با هم یکسان باشند.

منبع ۱: PHP_CSRF_Guard

منبع ۲: .Net_CSRF_Guard

اسکن امنیتی وب سایت
(5000 تومان)

نوع وب سایت: وبلاگ، شرکتی، تجارت الکترونیک و کسب و کارحرفه ای
آسیب پذیری های OWASP (شامل بررسی 10 آسیب پذیری متداول)
اسکن نرم افزار/وب سایت توسط Acunetix نسخه 11
اسکن تمامی پورت ها با ابزار Nmap
اسکن وب سرور و پیکربندی آن توسط ابزار Nikto
اسکن تزریق توسط نرم افزار قدرتمند SQLmap