欢迎来到天天文库
浏览记录
ID:19667547
大小:29.61 KB
页数:13页
时间:2018-10-04
《大型网站技术架构笔记(3)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、七、网站的安全架构-固若金汤1.XSS攻击 XSS攻击即跨站点脚本攻击(CrossSiteScript),指黑客通过篡改网页,注入恶意HTML脚本,在用户访问网页时,控制用户浏览器进行恶意操作的一种攻击方式。 常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的(盗取用户Cookie、密码来伪造交易、盗窃用户财产等)。另一种XSS攻击是持久型XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。(1)消毒
2、对某些html字符转义,如“>”转义为“>”等。(2)HttpOnly 即浏览器禁止页面JavaScript访问带有HttpOnly属性的Cookie。可通过对Cookie添加HttpOnly属性,避免被攻击者利用Cookie获取用户信息。2.注入攻击 注入攻击主要有两种形式,SQL注入攻击和OS注入攻击。SQL注入攻击的原理如下图所示。攻击者在HTTP请求中注入恶意的SQL命令,服务器用请求构造数据库SQL命令时,恶意SQL被一起构造,并在数据库中运行。 攻击者获取数据库表结构信息的手段有如下几种:(1)开源,如果网站采用开源
3、软件搭建,那么网站数据库就是公开的;(2)错误回显,如果网站开启了错误回显,即服务器内部500错误会显示到浏览器上,攻击者可以通过故意构造非法数据,使服务器异常信息输出到浏览器端,为攻击猜测数据库表结构提供了便利;(3)盲注,攻击者根据页面变化情况判断SQL语句的执行情况来猜测数据库表结构; 除了SQL注入,攻击者还根据具体应用,注入OS命令、编程语言代码等达到攻击目的。 防御措施:(1)消毒 和防XSS攻击一样,过滤请求数据中可能注入的SQL,如"droptable"等。另外还可以利用参数绑定来防止SQL注入。(2)参数绑定 使
4、用参数绑定是最好的防SQL注入方法。目前请多数据层访问框架,如MyBatis、Hibernate都实现了SQL预编译和参数绑定,攻击者的恶意SQL会被当做SQL的参数而不是SQL命令插入。3.CSRF攻击 CSRF即CrossSiteRequestForgery(跨站点请求伪造),攻击者通过跨站点请求,以合法用户的身份进行非法操作。CSRF的主要手段是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份。 CSRF的防御手段主要是识别请求者身份:(1)表单T
5、oke CSRF是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以,表单Token通过在请求参数中增加随机数的办法来组织攻击者获取所有请求参数。(2)验证码 更加简单高效,即请求提交时,需要用户输入验证码,以避免在用户不知情的情况下被攻击者伪造请求。(3)RefererCheck HTTP请求头的Referer域中记录着请求来源,可通过检查请求来源,验证其是否合法,还可以利用这个功能来实现突破防盗链。4.其他攻击和漏洞(1)ErrorCode(错误回显):获取异常信息进行攻击。 通过配置Web服务器参数跳转50
6、0页面到专门的错误页面。(2)HTML注释,HTML注释会显示在客户端浏览器中。(3)文件上传,上传病毒文件。 设置上传白名单,只允许上传可靠的文件类型。还可以修改文件名、使用专门的存储等。(4)路径遍历,在URL中使用相对路径,遍历系统未开放的目录和文件。 防御方法是将JS、CSS等资源部署在独立服务器、使用独立域名,其他文件不使用静态URL访问。5.WEB应用防火墙 ModSecurity是一个开源的Web应用防火墙(拦截请求、过滤恶意参数,自动消毒、添加Token),探测攻击并保护Web应用程序,既可以嵌入到Web应用服务器中
7、,也可以作为一个独立的应用程序启动。ModSecurity最早只是Apache的一个模块,现在已经有Java、NET多个版本,并支持Nginx。 ModSecurity采用处理逻辑与攻击规则集合分离的架构模式。处理逻辑(执行引擎)负载请求和相应的拦截过滤,规则加载执行等功能。而攻击规则集合则负责描述对具体攻击的规则定义、模式识别、防御策略等功能。处理逻辑比较稳定,规则集合需要不断针对漏洞进行升级,这是一种可扩展的架构设计。6.信息加密技术 为了保护网站的敏感数据,应用需要对某些数据进行加密处理。(1)单向散列加密(MD5、SHA)
8、 给散列算法加点盐(salt)增加破解难度。(2)对称加密(DES)(3)非对称加密(RSA) 非对称加密使用的加密和解密不是同一密钥,其中一个对外界公开,被成为公钥,另一个只有所有者知道
此文档下载收益归作者所有