前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS的原理和攻防

XSS的原理和攻防

作者头像
全栈开发日记
发布2022-05-13 14:34:06
8400
发布2022-05-13 14:34:06
举报
文章被收录于专栏:全栈开发日记

本章目录:

1·XSS能做什么 2·XSS攻击原理 3·防范XSS攻击的方式 4·使用框架防范XSS攻击

XSS的全名为:Cross Site Scripting。它的详细说明,大家可以自己百度了解一下,这里就不浪费篇幅了。

XSS能做什么

利用XSS攻击可以给指定的在线软件或网站挂马,通过获取用户的Cookie可以获取任何一个人的账号信息,包括密码等敏感信息。甚至管理员的后台地址及账号信息。

钓鱼攻击,在你毫不知情的情况下其实已经跳转到了对方指定的链接或者网站。

以上只是XSS攻击的一部分作用,详细的大家可以自行扩展。

XSS攻击的原理

XSS攻击一般是利用开发者遗留下来的漏洞进行攻击。如通过提交表单的方式,将恶意代码发送至服务器执行或使指定内容被返回,亦或者是将恶意代码保存至数据库中,每当该内容被读取都会执行该段代码从而达到更大范围杀伤力。

一般在网页中含有Editor(富文本编辑器)的时候比较常见这种攻击,对于以前的老网站来说,可以说这种攻击只能通过管理员后期维护来防止攻击,而在互联网飞快发展的今天,防御策略已经非常的成熟了。

但是毕竟互联网在进步,攻击手法也在进步,各位程序员还是勤快点多维护一下你的数据库,以防被别人挂马了造成不必要的损失。

防范XSS攻击的方式

防范XSS攻击行为,一般有三种方式,一是对输入内容和URL参数进行过滤,二是对动态输出的内容进行编码,使该脚本无法生效。三是对Cookie设置http-only,使JS无法对Cookie进行操作。

① 输入处理

对用户输入的内容,URL参数等进行过滤

针对可能发生的XSS攻击行为进行过滤,一般在挂马之类的恶意内容都是通过JS脚本进行的,而JS脚本需要<script>标签作为载体,所以我们应该在过滤内容中的JS标签。要么使它无法提交,要么在提交后,过滤掉该标签。

当然高级一点的手法,攻击者可能会针对你的后台语言进行相应的写法,从而绕过你的围追堵截。

对用户输入时进行白名单过滤

比如使用户只能输入英文、中文、数字、下划线等简单符号,而不能输入标签。从而达到白名单过滤,这种手法效率比较高,但是对于网站需要富文本输入框来说,这种过滤就不太现实了。

② 输出处理

从数据库读取内容长度超过20字符串的内容时,对内容进行过滤或编码转义,使恶意内容无法生效。

③ 使JS无法操作Cookie

将Cookie设置成http-only,是为了防止恶意代码生效后窃取Cookie内容。

设置方式:以下内容均使用Java

使用Spring:

代码语言:javascript
复制
// 该类实现org.springframework.web.servlet.HandlerInterceptor接口
// 重写preHandle方法
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
     Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString());
     cookie.setSecure(true);
     // 设置cookie为http-only
     cookie.setHttpOnly(true);
     httpServletResponse.addCookie(cookie);
     return true;
}

使用Servlet:

代码语言:javascript
复制
// 注意从servlet3.0开始支持cookie设置httpOnly
// 利用HttpResponse的addHeader方法设置cookie
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");

使用框架防范XSS攻击

可以自行复制链接到浏览器查看。

Node.js:https://github.com/leizongmin/js-xss

Java:https://github.com/naver/lucy-xss-filter

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • XSS能做什么
  • XSS攻击的原理
  • 防范XSS攻击的方式
    • ① 输入处理
      • ② 输出处理
        • ③ 使JS无法操作Cookie
        • 使用框架防范XSS攻击
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档