java web攻击_java WEB的攻击和防范

平常在编写代码中需要经常注意的安全编码,要带着安全的思想进行编码,在网上看了很多资料,进行了整理,归纳

重放攻击

概念:

重放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。它是一种攻击类型,这种攻击会不断恶意或欺诈性地重复一个有效的数据传输,重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。从这个解释上理解,加密可以有效防止会话劫持,但是却防止不了重放攻击。重放攻击在任何网络通讯过程中都可能发生。

防御:

1. 加随机数

该方法优点是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,就认为是重放攻击。缺点是需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。

2. 加时间戳

该方法优点是不用额外保存其他信息。缺点是认证双方需要准确的时间同步,同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易。

3. 加流水号

就是双方在报文中添加一个逐步递增的整数,只要接收到一个不连续的流水号报文(太大或太小),就认定有重放威胁。该方法优点是不需要时间同步,保存的信息量比随机数方式小。缺点是一旦攻击者对报文解密成功,就可以获得流水号,从而每次将流水号递增欺骗认证端。

XSS攻击(跨站脚本攻击)

概念:

攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用 户的身份和权限来执行。XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。

分类:

1.存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。

例如:在一个网站上发布了一个文章:,服务器从数据库读取后然后响应给客户端,浏览器执行了这段脚本,就会将cookie展现出来。

2.反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。

防御:

1.过滤特殊字符

避免XSS的方法之一主要是将用户所提供的内容进行过滤(如上面的script标签)。

2.使用HTTP头指定类型

w.Header().Set("Content-Type","text/javascript")这样就可以让浏览器解析javascript代码,而不会是html输出。

SQL注入

概念:

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

例如:' OR '1'='1获取数据库表所有信息,';DROP TABLE user;--    删除表

防御:

1.使用预编译语句(PreparedStatement),这样的话即使我们使用 SQL语句伪造成参数,到了服务端的时候,这个伪造 SQL语句的参数也只是简单的字符,并不能起到攻击的作用。

2.对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换。

3.避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

4.使用数据库框架,比如Mybatis,Hibernate等,其实市面上的数据库框架大部分都使用了预编译技术

DDOS攻击(分布式拒绝服务攻击)

概念:

简单说就是发送大量请求是使服务器瘫痪。DDos攻击是在DOS攻击基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos攻击的杀伤力降低,所以出现了DDOS,攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击。

例如:TCP类的SYN Flood(短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包)、ACK Flood,UDP类的Fraggle、Trinoo,DNS Query Flood,ICMP Flood,Slowloris类等等。

防御:

DDoS 防御产品的核心是检测技术和清洗技术。 检测技术就是检测网站是否正在遭受 DDoS 攻击,而清洗技术就是清洗掉异常流量。而检测技术的核心在于对业务深刻的理解,才能快速精确判断出是否真的发生了 DDoS 攻击。清洗技术对检测来讲,不同的业务场景下要求的粒度不一样。

CSRF攻击(跨站请求伪造)

概念:

攻击者盗用了你的身份,以你的名义发送恶意请求。 简单来说,网站 A 对用户建立信任关系后,在网站 B 上利用这种信任关系,跨站点向网站 A 发起一些伪造的用户操作请求,以达到攻击的目的。而之所以可以完成攻击是因为B向A发起攻击的时候会把A网站的cookie带给A网站,也就是说cookie已经不安全了。

防御:

1.前端是PHP和JSP时,可以在表单里隐藏一个随机变化的 csrf_token csrf_token 提交到后台进行验证,如果验证通过则可以继续执行操作。后端把csrf_token值存储在session中,然后每次表单提交时都从session取出来放到form表单的隐藏域中。

2.加密cookie中csrf_token值,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了。

3.验证 HTTP Referer 字段

4.Chrome浏览器端启用SameSite cookie(仅用于Chrome客户端设置)

重定向攻击

概念:

一种常用的攻击手段是“钓鱼”。钓鱼攻击者,通常会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信 任、窃取用户资料的目的。

防御:

1.白名单,将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之。

2.是重定向token,在合法的url上加上token,重定向时进行验证。

上传文件攻击

概念:

网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。 WebShell更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。

防御:

针对文件上传时检查,不仅仅要在客户端进行了检查 ,服务器也必须检查,比如:                                                                             (1)上传文件名,是否包含特殊字符,比如 /,%00 或者exe,js,sh等可执行文件,其中特别注意:%00截断符,如应用本来只允许上传jpg图片,那么可以构造文件名为xxx.php%00.jpg,其中%00为十六进制的0x00字符,.jpg骗过了应用的上传文件类型检测,但对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php。

(2)Content-Length,即上传内容大小

(3)MAX_FILE_SIZE,即上传内容的最大长度

(4)Content-Type,即上传文件类型

(5)请求包中的乱码字段,即是所上传文件的内容

(6)有可能存在请求包中的可控点还有上传路径,只是上面的示例中没有出现

权限攻击

概念:

权限攻击可以分为水平越权和垂直越权。

水平越权也叫作访问控制攻击。Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或者在判断数据所属人时从用户提交的表单参数中获取了userid。导致攻击者可以自行修改userid修改不属于自己的数据。所有的更新语句操作,都可能产生这个漏洞。

垂直越权又叫做权限提升攻击。其原理是由于Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

防御:

不要相信任何从客户端发送过来的认证数据。

水平越权:从session读取当前用户id,并且在执行的sql语句中加入当前用户id作为条件语句。

垂直越权:只需要在每个页面的加载之前进行权限验证即可。一个普通的权限系统,菜单是通过数据库中对应权限和角色来进行字符串拼接形成的,而不是静态的通过在页面上进行权限判断决定的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值