我需要一个用于jQuery .ajax()的CSRF令牌吗?

前端之家收集整理的这篇文章主要介绍了我需要一个用于jQuery .ajax()的CSRF令牌吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个基本的.ajax()POST方法到一个PHP文件

我需要什么安全措施?

提到使用隐藏的MD5输入字段,通过AJAX发送并在PHP文件中进行验证。这是一个很好的方法吗?

解决方法

CSRF的风险在于,外部网站可能会向您发送数据,用户浏览器将自动发送身份验证cookie。

您需要的是接收操作的一些方法(您的$ .ajax()方法正在发送POST数据),以便能够检查请求是否来自您网站上的其他页面,而不是外部站点

有几种方法可以做到这一点,但推荐的方法是向可以检查的请求添加一个令牌,并且黑客无法访问。

最简单的

>登录时创建一个长的随机字符串令牌并将其保存在用户身上。
>将参数添加到包含令牌的$ .ajax()请求中。
>请求检查令牌与您为用户保存的令牌相匹配。
>如果令牌不匹配,你有一个CSRF黑客。

黑客无法访问您的数据库,实际上无法读取您发送给用户页面(除非他们得到XSS攻击,但这是另一个问题),所以不能欺骗令牌。

所有令牌重要的是您可以预测(并验证)它,黑客不能。

因此,最简单的方法生成一些长时间随机的东西,并将其存储在数据库中,但是您可以建立加密的东西。我不会只是MD5的用户名 – 如果CSRF攻击者弄清楚如何生成你的令牌,你将被黑客入侵。

另一种方法是将令牌存储在cookie中(而不是数据库),因为攻击者无法读取或更改您的cookie,只会导致重新发送。那么你是cookie中的HTTP POST数据匹配令牌中的令牌。

您可以使这些更复杂,例如每次成功使用(防止重新提交)或特定于用户和操作的令牌时更改的令牌,但这是基本模式。

猜你在找的jQuery相关文章