Security 如何检测CSRF漏洞

Security 如何检测CSRF漏洞,security,csrf,Security,Csrf,给定一个网站,如何检测潜在的CSRF漏洞 提前感谢为了检测CSRF漏洞,您需要了解什么是CSRF CSRF是一种攻击,它迫使最终用户在其当前已通过身份验证的web应用程序上执行不需要的操作。借助社会工程(如通过电子邮件/聊天发送链接),攻击者可以诱使web应用程序的用户执行攻击者选择的操作 当后端应用程序未签出客户端故意发送的表单时,会出现基本的CSRF漏洞。为了理解请求是有意还是无意发送的,您需要在html表单中使用令牌,然后在后端签出该令牌 例如: <form action="/set

给定一个网站,如何检测潜在的CSRF漏洞


提前感谢

为了检测CSRF漏洞,您需要了解什么是CSRF

CSRF是一种攻击,它迫使最终用户在其当前已通过身份验证的web应用程序上执行不需要的操作。借助社会工程(如通过电子邮件/聊天发送链接),攻击者可以诱使web应用程序的用户执行攻击者选择的操作

当后端应用程序未签出客户端故意发送的表单时,会出现基本的CSRF漏洞。为了理解请求是有意还是无意发送的,您需要在html表单中使用令牌,然后在后端签出该令牌

例如:

<form action="/setting/emailchange.php">
<input type="hidden" name="csrf_token" value="RANDOM_STRING_HERE"
<input type="text" name"email" value="" placeholder="Type new email">
</form>

这是一种攻击:-

受害者被引诱浏览的
www.evil.com
页面包含以下代码:-


document.forms[0].提交()
当受害者以管理员用户身份登录您的站点(
www.example.com
)时,表单提交工作正常,所有用户都将从您的系统中删除

是修复此漏洞的推荐方法。这将添加一个加密安全的随机字符串,称为令牌,当合法用户存储在服务器端并与用户会话配对后加载到您的站点时,该字符串将添加到表单中。提交表单时,系统将检查所发布的令牌是否与预期的令牌匹配。任何攻击者都无法从您的站点读取令牌,因为任何跨站点访问都受保护


web安全扫描程序通常可以检测站点上的此类漏洞。您可以通过检查浏览器机制提交的表单来手动检查,以确定它们是否包含令牌字段。但是,AJAX提交可能会使用另一种方法,例如。

任何参数可以由第三方猜测/预测的请求都容易受到CSRF的攻击。如果我可以扩展的话:任何不在代码内存执行空间内的、第三方可以猜测/预测的其他系统的值都容易受到CSRF的攻击。
<form method="post" action="https://www.example.com/executeAction">
    <input type="hidden" name="action" value="deleteAllUsers">
</form>

<script>document.forms[0].submit()</script>