系统安全是一个经久不衰的话题,也是一个中大型系统必须考虑的问题,这是一门专门的学问,无数专家学者都在为之努力,今天小编就来向大家介绍一下常见的网站攻击方式以及避免攻击的方案。
编辑
跨站脚本攻击(XSS)
XSS(Cross Site Scripting),跨站脚本攻击。为和层叠样式表(Cascading Style Sheets,CSS)区分开,所以叫XSS,分为反射型和存储型两种(后续文章会介绍到)。
编辑
这种攻击主要以干扰浏览器显示为主,我们举例一个场景:我们平时都会在网页上面都会评论,如果我们输入的内容是’<script>alert(“你被攻击了”);</script>’,如果这段话被腾讯数据库存储,并且正常输出到页面,那么页面是一个什么效果呢,必定每个人访问到这个留言的时候网页都会出来一个不正常的弹窗提醒语句,这就是XSS攻击。
避免攻击:避免XXS攻击需要我们从代码层面进行规避,对JavaScript标签进行转义后存储,这样浏览器解析的时候才不会出现问题。
SQL注入
和XSS一样,这是一个非常常见的网站攻击注入方式,就是我们平常写SQL的时候不严谨导致的,例如我们需要查询一个用户是不是存在我们数据库里面。
编辑
如果name输入的是zhangsan,密码输入的是123456正常来看是没有问题的,但是如果我们name输入的是 zhangsan‘ or ‘1’=’1 呢?,上面的语句就变成了。
编辑编辑
由于存在or ‘1’= ‘1’那么这个SQL就有查询结果了,就把别人的用户信息查出来了,因此成功实现了SQL注入。
编辑
避免攻击:常规来说避免SQL注入的方法比较简单,就是不要用SQL拼接的方式去组装查询语句,需要用到占位符和SQL预处理功能,这样会对SQL中的特殊字符如单引号等进行转义,这样就不会存在问题了。而且往往有时候直接拼接的SQL是有风险的,可能特殊字符导致在生产环境的机器报错。
CSRF攻击
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,有着不小的安全风险,可以理解为攻击者冒用了您的信息进行各种合法的操作,比如转账、发邮件、删除各种记录等。
编辑
避免攻击:防止 CSRF 攻击目前来说主要有三种方式:验证 HTTP Referer 字段;在请求地址中添加 token 并验证,在 HTTP 头中自定义属性并验证。
文件上传漏洞
这个也是比较常见的攻击方式,上传文件中上传了一些可执行的文件或者脚本,可能被服务器执行了,可能导致代码数据被盗窃或者被删除。
编辑
避免攻击:对于文件上传,不能够简单的通过文件名后缀来判断文件类型,一般来说文件的起始的几个字节内容是固定的,我们可以根据这几个字节的内容来确定文件类型,这几个字节也被称为magic number。
重定向攻击
这种在一些钓鱼网站中经常见到,一般会发送给用户一个合法链接,这个链接被用户点击的时候,导向进入一个非法网站,从而达到骗取用户信任、窃取用户资料的目的。
编辑
避免攻击:一般来说我们需要审核重定向的网址,通过加入黑白名单的方式监控。
Cookie攻击
主要是利用JavaScript能够在当前域名下获取网站cookie的特性来攻击(javascript:alert(doucment.cookie)),一般来说可以配合XSS和CSRF来进行攻击,
编辑
避免攻击:现在主流浏览器都支持在cookie上加上HttpOnly的属性,这样cookie就无法通过Java Script来取得,如果能在关键cookie上打上这个标记,对cookie的安全性的提高有很大作用。
DoS攻击
拒绝服务攻击(denial-of-service attack, DoS)亦称洪水攻击,这也是网络安全领域不得不提到的一个攻击,主要攻击方式为不断的向目标服务器进行强烈多次的攻击,这种攻击及其消耗服务器的带宽和资源,最终使得服务器资源耗尽而崩塌。
编辑
避免攻击:这种攻击一般可以通过一些防火墙策略和报警机制来解决,同时配上人为监控。简单的讲可以对访问过多的IP进行封禁。深入一点讲,可以做一些流量清洗方案。采用抗 DDoS 软件,将正常流量和恶意流量区分开。
来自编程社:程序员日常进阶宝典,欢迎关注!
编辑