如何在PHP中有效防止跨站点请求伪造(CSRF)
我试图通过以下方式阻止
php中的
CSRF:
>在每个页面的开头生成$_SESSION [‘token’].我已经知道使用$_COOKIES是完全错误的,因为它们是针对每个请求自动发送的. 现在我有几个小问题: >这是防止CSRF的好方法吗?如果没有请解释. 非常感谢你提前.
是.这样做是为了强制客户端在表单上执行GET,然后才能对表单处理程序执行POST操作.这可以防止现代浏览器中的CSRF,因为浏览器会阻止客户端Javascript对外部域执行XHR GET请求,因此第三方无法在其网站上模仿您的表单并成功获得提交的有效令牌.
允许多个令牌一次有效,在会话中保留一组有效令牌.或者,根本不存储令牌,而是使用令牌签名方案.我已经涉足并解释了here.备选方案2:只使用一个令牌进行整个会话,而不会使令牌失效. (在评论中向@SilverlightFox提示帽子)
不需要.你只需要保护POST请求,因为大概只有POST请求才能改变敏感数据(wink wink nudge nudge,你坚持REST约定,对吧?!)XHR GET请求已被浏览器端阻止. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |