网站的安全架构
网站的安全架构
一. 网站应用攻击与防御
攻击新浪微博的手段被称作XSS攻击,它和SQL注入攻击构成了网站应用攻击最主要的两种手段,全球大约70%的web应用攻击都来自XSS攻击和SQL注入攻击。此外,常用的web应用还包括CSRF、session劫持等手段。
1.XSS攻击
XSS攻击即跨站点脚本攻击(cross site script),指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的攻击方式。
常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。攻击者可以采用XSS攻击,偷取用户Cookie、密码等重要数据,进而伪造交易、盗窃用户财产、窃取情报。
另外一种XSS攻击是持久性XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击目的。
防止XSS攻击:
1.过滤(消毒):把一些特殊字符(例如:<)过滤,因为这些特殊字符本身也不是用户使用的。
2.httponly:浏览器禁止页面Javascript访问带有httpOnly属性的Cookie,防止XSS攻击者窃取Cookie。如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。secure属性当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。
2.SQL注入攻击
攻击者在HTTP请求中注入恶意SQL命令,服务器请求参数构造数据库sql命令时,恶意sql被一起构造,并在数据库中执行。
防止sql注入:
- 过滤:把一些特殊字符过滤(例如:drop table)。
- 参数绑定:许多数据访问层框架,如MyBatis,Hibernate等,都实现了sql预编译和参数绑定,攻击者的恶意sql会被当作sql的参数,而不是sql命令执行。最好的防sql注入的方法就是绑定参数。
3.CSRF攻击
CSRF(Cross Site Request Forgery,跨站点请求伪造),利用跨站请求,在用户不知情的请求下,以用户身份伪造请求。其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份。
CSRF的防御手段主要是识别请求者身份,主要有一下集中方法:
- 表单token:在页面表单中增加一个随机数作为token,每次响应页面的token都不相同,从正常页面提交的请求会包含token值,而伪造的请求无法获得该值,通过判断token值是否存在和正确来判断请求是否合法。
- 验证码:登录、支付等页面加入验证码。
- Referer check:http请求头的Referer域中记录着请求来源,可通过检查请求来源,验证是否合法。许多网站使用这个功能实现图片防盗链。
获取Referer:request.getHeader("referer");
4.其他攻击和漏洞
Error Code:攻击者通过查看错误页面,发现漏洞。
Html注释
文件上传:上传可执行文件等,可通过判断文件类型来防御
路径遍历:
5.web应用防火墙
ModSecurity是一个开源的web应用防火墙,探测攻击并保护web应用程序,既可以嵌入到web应用服务器中,也可以作为一个独立的应用程序启动。
6.网站安全漏洞扫描
二. 信息加密技术和密钥安全管理
CSDN密码泄漏事故中,网站安全措施不力,导致用户数据库被黑客“拖库”并不稀奇,令人错愕的是数据库中的用户密码居然是明文保存。
1.单向散列加密
常用的单向散列算法有MD5、SHA
2.对称加密
常用的对称加密算法有:DES算法、RC算法。
3.非对称加密
非对称加密和解密使用的不是同一个密钥,其中一个对外界公开,另一个只有所有者知道,用公钥加密的信息必须用私钥裁能解开,用私钥加密的信息也只有用公钥才能解开。
非对称加密算法有RSA算法。https传输中浏览器使用的数字证书实质上是经过权威机构认证的非对称加密的公钥。
4.密钥安全管理
无论是单向散列salt、对称加密的密钥还是非对称加密的私钥,都需要保密。事实上,很多密钥就放在程序或者配置文件里,很多人可以接触。
实践中有可以有两种手段改善这种情况:
- 把密钥和算法放在一个独立的服务器上,甚至做成一个专用的硬件设备。
- 把加密算法放在应用系统里,密钥放在独立服务器上。
三.信息过滤与反垃圾
1.文本匹配
文本匹配主要解决敏感词过滤的问题。通常网站维护一份敏感词列表,如果用户发表的信息含有列表中的敏感词,进行过滤或者拒绝发表。
快速判断用户信息中是否含有敏感词:
1.正则表达式匹配(适合信息文本比较短)
2.trie算法
3.构造多级hash表进行文本匹配(适合敏感词数量少)
2.分类算法
3.黑名单
四.电子商务的风险控制
1.风险
- 账户风险:账户被黑客盗用
- 买家风险:买家恶意下单,黄牛抢购低价产品等
- 卖家风险:不良卖家发布虚假信息等欺骗买家
- 交易风险:信用卡盗刷等。
2.风控
大型电商网站都配备有专门的风控团队进行风险控制,风控的手段包括自动和人工。
机器自动风控有以下几种:
- 规则引擎:如交易金额大于某个值,或者登录地与常用登录地址不同等进行风险控制。
- 统计模型:根据历史交易中的欺诈交易信息训练分类算法,然后将采集加工后的交易信息输入分类算法,即可得到交易风险分值。
五.小结