1.SQL注入------常见的安全性问题。
解决方案:前端页面需要校验用户的输入数据(限制用户输入的类型、范围、格式、长度),不能只靠后端去校验用户数据。一来可以提高后端处理的效率,二来可以提高后端数据的安全。
后端不要动态sql语句,使用存储过程查询语句。限制用户访问数据库权限。后端接受前端的数据时要过滤一些特殊字符(如:“--”等字符)
后端如果出现异常的话,要使用自定义错误页,防止用户通过服务器默认的错误页面找到服务器漏洞。
2.XSS攻击------相对复杂的安全性问题
攻击方式:基于DOM的XSS即通过浏览器来直接运行js脚本,无须提交服务器,从客户端的代码引起的。
如:其实就是发送一个合法的地址加自己的脚本,比如:www.xxx.com/search?wd=...
受害者点击的是www.xxx.com/search?wd=...链接,然后受害者的浏览网页就加入这个恶意代码。
存储XSS攻击即通过输入框提交js脚本或者上传文件到服务器,从网站的数据库引起的攻击。
反射XSS攻击即通过url提交js脚本到服务器,从受害人的请求发起引起的攻击。
解决方案:后端输出页面的时候需要进行转换html实体。
如:转义成
过滤用户输入。
PS:xss攻击的地方很多,html、css、js都有可能会被注入威胁。
3.CSRF攻击------比xss攻击更危险的安全性问题
攻击方式:受害者打开网站A,登陆网站A,网站A保存一些cookies在本地(没有关闭浏览器),受害者又打开网站B,网站B保存一些恶意cookies,并向网站A发送受害者的请求(网站B利用受害者攻击网站A)。
受害者打开网站B,网站B诱使受害者进行网站A的操作。(假官网盗取用户资料)
解决方案:验证 HTTP Referer 字段,给用户分配token。
4.DoS攻击------常见的具有破坏性的安全性问题(如果是分布式攻击的话就是DDos攻击)
攻击方式:Ping Flood攻击即利用ping命令不停的发送的数据包到服务器。
SYN Flood攻击即利用tcp协议原理,伪造受害者的ip地址,一直保持与服务器的连接,导致受害者连接服务器的时候拒绝服务。
解决方案:设置路由器与交换机的安全配置,即设置防火墙。(涉及到硬件问题我就不多说了,只是提醒一下)
5.DNS缓存污染------常见的网站不可访问的问题
攻击方式:第三方可信赖的域名服务器缓存了一些DNS解析,但被别人制造一些假域名服务器封包污染了,指向错误网址。
解决方案:备多个域名服务器商。
6.ARP欺骗------常见的窃取资料的安全性问题
攻击方式:利用ARP欺骗,伪造成网关,让受害者的数据经过攻击者的电脑,从而抓取别人的用户信息。
解决方案:强烈要求数据必须加密传输,启动https协议。
7.中间人攻击(会话劫持)-----常见的窃取资料的安全性问题
攻击方式:劫持会话cookies,把受害者(A)与受害者(B)之间通信经过攻击者的电脑。(常见于在线聊天系统)
解决方案:用户进行二次验证,随机产生会话ID,会话cookies设置httponly(某些情况下httponly设置无效)。
增加http请求头信息。判断是否是真实用户的请求。
PS:cookies有两种。
会话cookies : 建立会话的cookies,关闭浏览器失效。
持久性cookies : 持久保存本地的cookies,到期失效。
cookies也可以进行XSS,CSRF攻击。(把恶意代码存放到cookies里面)
补充:因为现在大多数的web项目都采用前后端分离的模式开发。前端就通过ajax请求与后台交互。所以传统的sessionid保存在cookies或者是存放在url是不安全的。所以大多数的web项目都采用基于token鉴权机制来识别用户
身份。即用户登录系统后,服务端会返回一个token(sessionId+userId)给客户端,并保存一个token在缓存数据库(如:redis),客户端每次请求带token(JWT即JSON WEB TOKEN),服务端获取token后通过加密算法生成的字符 ,然后匹配自存放在缓存
数据库的token进行比较。
8.后门 -----常见的软件漏洞问题
后门是指一种绕过安全性控制而获取对程序或系统访问权的方法。在软件的开发阶段,程序员常会在软件内创建后门以便可以修改程序中的缺陷。如果后门被其他人知道,
或是在发布软件之前没有删除,那么它就成了安全隐患。常见于一些热补丁更新软件。
攻击方式:使用webshell提交恶意的动态网页到网站服务器,然后执行恶意的动态页面(如:www.XXX.xom/恶意页面.jsp)。
解决方案:使用非对称后门接口进行软件更新,避免对称后门接口。 给后端程序加壳。
使用蜜罐技术。
PS:蜜罐是指一个包含各种漏洞的系统,模拟一个或多个易受攻击的主机,给黑客提供一个容易攻击的目标。
简单来讲,这就是一个调虎离山,欲擒故纵的策略。