CSRF攻击防范Token解决

CSRF攻击防范Token解决

2023年6月20日发(作者:)

CSRF攻击防范Token解决攻击过程和原理1. ⽤登录⼝令成功登录系统A,保留A系统cookie到浏览器。2. 登录另⼀系统B,B系统对A系统进⾏post数据提交(也可以对get请求发起类似的攻击,如果A系统对get请求也进⾏数据更新的话,这种风险有可能会发⽣),对系统数据进⾏更新。 n 攻防 防护 a) 使⽤Referer判断,判断请求头中的域名和配置的是否⼀致(IE5应该可以篡改Referer的值.⿊客攻击时可能修改浏览器⾃动⽣成的Header头中的Referer,所以不能完全保证,同时referer验证还有其他问题)。 b) 使⽤Token判断,⽤户登录时根据⽤户名和密码等加密⽣成⼀个Token值,同时写⼊到浏览器的Cookie和Hidden中,然后根据每次的请求将Token和Cookie同时带⼊到服务端进⾏验证和判断。 d) 中使⽤@rgeryToken(),框架⾃⼰会在Reponse时写⼊Cookie和Hidden的的Token值,在需要验证的Action上标记[ValidateAntiForgeryToken],在提交数据时框架会⾃动进⾏验证。 MVC 使⽤Token解决⽅法3. 在加密和解密时使⽤了加密和解密算法,所以对于单台服务器的话不⽤单独配置算法,有负载均衡的应⽤,对于⽣成token和提交验证token可能落在不同的服务器上,所以需要统⼀算法,否则会报【异常信息=⽆法解密防伪标记。如果此应⽤程序由 WebFarm 或群集承载】,需要在配置⽂件中增加

decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77"

decryption="3DES"

validation="SHA1"/>  ///

/// Token验证 /// public class TokenAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { var request = t; if (thod == ) { if (Request()) { var antiForgeryCookie = s[Name]; var cookieValue = antiForgeryCookie != null : null; te(cookieValue, s["authToken"]); } else { new ValidateAntiForgeryTokenAttribute() .OnAuthorization(filterContext); } } } }  

form提交时hidden中的Token被⾃动提交,在ajax中需要单独传⼊Token,Cookie内容会⾃动携带var token = $("[name='__RequestVerificationToken']").val() || "";var useHeaders = {};useHeaders["authToken"] = token; $.ajax({ url: url, type: "POST", data: || {}, dataType:"json", headers: useHeaders || {},});  

参考

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687249434a9.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信