数据安全是一个重要的模块,我们从三个层面入手:操作系统、应用系统、数据库、比较常用的是应用系统和数据库层面的安全保障措施,
在操作系统层面通过防火墙的设置,如设置端口成8080只有自己的电脑能访问,应用层如下三大点:
跨站脚本攻击(xss)
有三种类型:
反射型:一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当用户点击时,恶意代码会直接在受害者主机上的浏览器执行。
通常出现的场所: 网站的搜索栏,用户登陆口等,常用来窃取客户端Cookies或者进行钓鱼。
存储型:也叫持久性xss 主要将xss代码提交到存储在服务端(数据库,内存,文件系统),下次请求目标页面时不用提交xss代码,当目标用户访问该页面,xss代码会
从服务器解析加载出来,返回到浏览器做正常的html和js解析执行。
场所:留言,评论,博客日志等交互处
攻击型: 基于dom指的是 通过恶意脚本修改页面dom结构,是纯粹发生在客户端的进攻,dom,xss攻击中 取出和执行恶意代码由浏览器端完成,属于前端javaScript自身的安全漏洞。
1、Javascript来对字符进行过滤,将一些如%、< 、>、 [、]、{、}、;、&、+、-、"、(、) 的字符过滤掉。
2、对重要的cookie设置httpOnly,防止客户端通过document.cookie就可以读取了,此HTTP头由服务端设置。
3、将不可信的值输出URL参数之前,进行URLEncode操作,而对于URL参数中获取值一定要进行格式检测。
4、后端接口也要做到关键字过滤的问题。
CSRF(跨站请求攻击)
是一种挟制用户在当前已登录Web应用上执行非本意的操作攻击方法。
1、验证码机制:添加验证码来识别是不是用户主动发起这个请求。
2、请求来源机制:在HTTP请求头中Referer字段,它记录了请求的来源地址,服务器验证该来源地址是否合法,如果来自一些不受信任的网站,则拒绝响应。
3、验证机制--token的使用:服务器随机生成token,简单的来说,前端发送请求时需要挟持token一起,后端对比token是否一致,如果一致可以证明请求有效,反之拒绝该请求。
如何防止SQL注入
sql注入是一种注入技术,用于攻击数据驱动的应用,恶意的sql语句被插入执行的实体字段中。常见的(“or '1'='1'-”)
mybatis是一款优秀的持久层架构,它支持定制化sql,存储过程以及高级映射。我们使用#{} 代替 ${}。
简单的说,#{}是经过预编译的,是安全的;${}是未经过预编译的,仅仅是去变量的值,是非安全的,存在SQL注入。