XSRF全称是 cross-site request forgery(跨站点请求伪造),也称为CSRF,是一种常见的web攻击方式。
攻击形式描述如下:
1.用户登录并访问一个正常的站点 http://www.biz.com;
2.在同一个浏览器实例下,用户打开了恶意网站 http://www.bad.com;(至于用户怎么会打开这个恶意网站,可能是恶意网站通过一些链接或者垃圾邮件等等形式诱骗用户点了某一个链接)
3.恶意网站页面里包含下面一段代码:
<form method="POST" name="evilform" target="hiddenframe"
action="https://www.biz.com/update_profile">
<input type="hidden" name="password" value="heihei">
</form>
<iframe name="hiddenframe" style="display: none">
</iframe>
<script>
document.evilform.submit();
</script>
你明白下面会发生什么了:用户在不知觉的情况下,被修改了密码。
如何防御XSRF攻击,方法比较多,比如在上面的例子中,要修改密码,必须提供旧密码,那么就可以有效的避免攻击。但是,XSRF是一个普遍存在的问题,不能所有场景下都需要用户输入一串东西,用户肯定会崩溃。
比较靠谱和通用的解决方案如下:
在进行一些改变系统数据的重要操作中(比如提交订单,修改密码,删除..等操作),加入一个供校验的action token。这个action token是由应用先前生成的(如绘制表单时),作为表单的一个hidden字段。
这个action token的生成必须要有些讲究,不能让骇客随意冒充过关,一个靠谱的生成算法如下:
action token = F(K,C),其中K是一个只有应用服务器才知道的密钥,C是本次会话的标识,如jsessionid。
应用在接受到请求时,首先校验action token是否合法,校验的方式是取出jsessionid,然后使用F(K,C)计算action token,如果计算的结果和表单提交过来的action token值一样,则放行。
这种方案可以有效的防御XSRF攻击,因为恶意网站无法知道K和C的值,无法伪造action token。
但是如果你的站点遭遇了XSS攻击,那么一切都白搭,因为骇客可以轻易的获取session cookie,冒充用户身份直接攻击即可。
分享到:
相关推荐
本包中,含有2个实现springboot后端实现防御xSRF攻击的策略代码,具体使用,还需要看您的具体场景,进行区分使用!CSRFInterceptor.java、XSRFHandlerInterceptor.java
此外,Openfire和Smack的结合使用还涉及到安全性问题,如SSL/TLS加密通信、防止XSRF攻击等,这些都是在设计和实现即时通讯系统时需要考虑的关键点。同时,为了提升用户体验,还可以利用Openfire的插件机制扩展功能,...
网络请求使用基于 HTTP 协议的 Axios 网络请求,支持 XMLHttpRequests、转换请求数据与响应数据、自动转换 JSON 数据及防止 XSRF 攻击等功能。通过 Token 保存识别信息,并减少不必要的交互信息,以提升系统健壮性。...
Axios,基于Promise的HTTP客户端,可以工作于浏览器中,也可以在node... 功能: 从浏览器中创建XMLHttpRequest ...支持Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止XSRF攻击
Axios,基于Promise的HTTP客户端,可以工作于浏览器中,也可以在node... 功能: 从浏览器中创建XMLHttpRequest ...支持Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止XSRF攻击
Axios,基于Promise的HTTP客户端,可以工作于浏览器中,也可以在node... 功能: 从浏览器中创建XMLHttpRequest ...支持Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止XSRF攻击
Axios,基于Promise的HTTP客户端,可以工作于浏览器中,也可以在node... 功能: 从浏览器中创建XMLHttpRequest ...支持Promise API 拦截请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止XSRF攻击
在 Go 语言中,XSRF(Cross-Site Request ...在开发过程中,确保正确地生成、存储和验证令牌,是防止跨站请求伪造攻击的关键步骤。同时,定期更新依赖库以获取最新的安全修复和功能改进,也是维护应用安全的重要习惯。
同时,为了保护用户隐私和防止XSRF攻击,Token通常设置为httpOnly的Cookie,不暴露给JavaScript。 总的来说,这个项目提供了一个理解并实践Node.js中Token认证的好例子,涵盖了前后端通信、身份验证和安全等方面的...
这种方法能有效防止攻击者伪造请求。 2. **Referer检查**:通过检查HTTP头部中的`Referer`字段,判断请求来源是否合法。然而,这种方法并非完全可靠,因为`Referer`字段可以被篡改。 3. **同源策略**:利用浏览器的...
10. **安全性**:使用 SocketBot 时,还需要考虑安全问题,如防止 XSRF 攻击、数据加密和验证用户身份等。 以上就是关于 SocketBot 的一些主要知识点,通过深入理解和实践,开发者可以充分利用 JavaScript 和 ...
5. **安全考虑**: 为防止 XSRF 攻击,需要在 Express 设置相应的防护措施,并在 Angular 中添加相应的令牌。 6. **部署**: 通常 Angular 应用打包成静态文件部署在 Express 服务器上,由 Express 提供这些静态文件。...
Spring Boot 中使用 Spring Security 防止 CSRF 攻击 CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF 攻击可以盗用用户的...
烧瓶-xsrf 扩展,通过为每个请求使用唯一生成的令牌来保护flask请求端点,从而防御跨站点请求伪造攻击 。 烧瓶PYTHON X射线荧光光谱仪 建立状态分支服务地位服务标题地位master ci-build github tags develop ci-...
XSRF攻击简介 CSRF攻击依赖于用户的浏览器保持对特定网站的会话状态,例如登录后的session或cookie。攻击者通过构造一个恶意链接或者表单,诱导用户点击或提交,从而执行在目标网站上的操作,如修改密码、转账等。...
【跨站脚本攻击(XSS)】 ...攻击者通常通过创建含有恶意脚本的网页内容,诱导用户访问,从而在用户的浏览器环境中执行...通过以上介绍的XSS和XSRF攻击及防御策略,开发者可以更好地保护他们的Web应用程序免受此类威胁。
CSRF/XSRF 是一种跨站请求伪造攻击,恶意攻击者可以通过伪造用户的请求来控制用户的行为。为了防止 CSRF/XSRF,我们可以使用 token 验证、referer 验证和验证码等方法来确保用户的安全。 1.4 命令执行 命令执行是...
axios是基于promise的用于浏览器和nodejs的HTTP客户端,本身有以下特征...从浏览器中创建XMLHttpRequest; ...支持promiseAPI 拦截 请求和响应 转换请求和响应数据 取消请求 自动转换JSON数据 客户端支持防止CSRF/XSRF攻击
Fiddler XSRF Inspector是Fiddler 2的插件,可从HTTP请求中提取跨站点请求伪造攻击。