struts防止xss攻击_Web常见攻击手段(二)

人一生当中,最重要的是,清楚自己想要什么,明白自己能做什么。千万不要等到生命终结的时候,才后悔没有得到想要的,没有去做能做的,从而虚度了人生。42276599e03c782583cdd928051cb589.png42276599e03c782583cdd928051cb589.png42276599e03c782583cdd928051cb589.png

03b7ae9aa3076ff5cbb9e2bad143e1a4.png

上篇文章介绍了几个Web常见攻击手段:防盗链、CSRF攻击还有安全漏洞像文件上传漏洞、密码漏洞等,这篇文章我们介绍一下:XSS攻击和sql注入。XSS攻击

什么是XSS攻击?

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。(摘自百科)

简单讲就是:通过利用网页开发时留下的漏洞,恶意攻击者往Web页面里插入恶意 Script代码,当用户浏览时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS攻击原理?

使用JS脚本语言,因为浏览器默认支持脚本语言执行,如果在表单提交的时候,提交一些脚本参数,可能浏览器直接执行。

XSS常见漏洞?

① 通过 document.cookie 盗取 cookie中的信息,读取本地cookie远程发送给黑客服务器端;

②表单提交的时候:论坛、评论等,eg:表单提交的时候输入:

③ 使用 js或 css破坏页面正常的结构与样式;

④流量劫持(通过访问某段具有 window.location.href 定位到其他页面:

XSS攻击防御手段:将脚本特殊字符,转换成html源代码进行展示,我们在Java中可以写一个过滤器,拦截获取所有参数,将特殊字符转换成HTML展示,举个栗子如下代码:

过滤器如下:@WebFilter(filterName = "xssFilter", urlPatterns = "/*")public class XssFilter implements Filter {    public void init(FilterConfig filterConfig) throws ServletException {    }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)            throws IOException, ServletException {        // 程序防止XSS攻击原理        // 1. 使用过滤器拦截所有参数        HttpServletRequest req = (HttpServletRequest) request;        // 2.重写getParameter方法        XssHttpServletRequestWrapper xssHttpServletRequestWrapper = new XssHttpServletRequestWrapper(req);        // 放行程序,继续往下执行        chain.doFilter(xssHttpServletRequestWrapper, response);    }    public void destroy() {    }}public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {  private HttpServletRequest request;  /**   * @param request   */  public XssHttpServletRequestWrapper(HttpServletRequest request) {    super(request);    this.request = request;  }  @Override  public String getParameter(String name) {    // 获取之前的参数    String olValue = super.getParameter(name);    System.out.print("原来参数:" + olValue);    if (!StringUtils.isEmpty(olValue)) {      // 将特殊字符转换成html展示 // 3.使用(StringEscapeUtils.escapeHtml(name)转换特殊参数      olValue = StringEscapeUtils.escapeHtml(olValue);      System.out.println("转换后" + olValue);    }    System.out.println();    return olValue;  }}

commons-lang 包下提供了接下html的工具类,如果使用springboot,记得加 @ServletComponentScan这个注解,否则扫描不到:@WebFilter。


Sql注入

什么是Sql注入?

SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的作。

造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码

Sql注入防攻击手段:

不要使用拼接SQL语句方式、最好使用预编译方式。比如使用mybatis时,在mybatis编写sql语句的时候,最好使用#传参数方式,不要使用$传参数,因为$传参数方式,可能会受到sql语句攻击。

eg:http://127.0.0.1:8080/lgin?userName='zs'&password='123'
http://127.0.0.1:8080/login?userName='zs'&password='123'  or 1=1

MyBatis #与$区别:
#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符,可以防止SQL注入问题。
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。


欢迎关注ITSK,每天进步一点点,我们追求在交流中收获成长和快乐5afa217d31daebfa9a23f02e75384e2d.pngc9a5443c1fbfc2ed0c0a3b518ac22be8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、什么是XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。 XSS漏洞的危害 (1)网络钓鱼,包括盗取各类用户账号; (2)窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作; (3)劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等; (4)强制弹出广告页面、刷流量等; (5)网页挂马; (6)进行恶意操作,例如任意篡改页面信息、删除文章等; (7)进行大量的客户端攻击,如DDoS攻击; (8)获取客户端信息,例如用户的浏览历史、真实IP、开放端口等; (9)控制受害者机器向其他网站发起攻击; (10)结合其他漏洞,如CSRF漏洞,实施进一步作恶; (11)提升用户权限,包括进一步渗透网站; (12)传播跨站脚本蠕虫等; 三、过滤器配置 web.xml配置 XssFilter com.xxx.Filter.XssFilter XssFilter /*

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值