系统安全问题与应对
1:常用攻击手段与防范
1.1 跨站脚本攻击(Cross-Site Scripting)-XSS
1.1.1 攻击方法
1:反射性XSS
攻击者拼接URL,URL中含有脚本等可执行的代码,发给用户,
用户点击URL,网站存在XSS漏洞,返回给用户的响应中带注入的攻击脚本,
用户收到响应后浏览器本地执行攻击脚本。
不一定是攻击脚本,也可能链接中含有其他非用户意愿的请求。
2:存储型
原理类似,只是将信息存储到了被攻击网站的服务器中,其他用户浏览时都会执行攻击脚本,危害范围更大。
1.1.2 防范
服务端对用户输入的任何信息进行转义,返回到用户的不会包括注入的脚本
对用户输入验证
1.2 sql注入攻击
1.2.1 攻击方法
将用户提交请求中的一部分作为sql语句的一部分拼接,
用户输入中包括sql的特殊字符,导致sql实际执行与原意不同。
sql注入可导致数据泄露,篡改等恶性后果。
1.2.2 防范
请求参数消毒:过滤请求参数可能注入的sql。
SQL预编译:让注入只能当做参数。ORM框架都实现了。
别在程序中根据参数拼接SQL。
1.3 CSRF攻击-跨站伪请求(Cross Site Request Forgery)
1.3.1 攻击方法
用户点击三方网站的连接,跳转到本网站,并附带上了cookie。
请求参数是三方网站伪造的。
1.3.2 防范
每次请求都附带不同的token。
判断请求的referer来源
验证码
1. 4 其他安全问题
1.4.1 错误回显
服务内部错误,异常堆栈返回到客户端,给非法者提供可乘之机。
防范:统一跳转到内部错误也。堆栈只在内部输出日志,不返回。
1.4.2 前端页面注释
前端页面的注释中包括关键信息,暴露系统内部实现,被非法利用。
发布时扫描去掉
1.4.3 文件上传恶意程序
设置允许上传的文件类型,后台保存时修改文件名,专门的文件存储服务器
1.4.5 路径遍历获取后台文件
js,css等资源文件独立服务器,其他文件不使用静态url.动态参数不包括文件路径
2:系统安全设计常用
加密存储
敏感信息加密存储
用户密码单向散列加密,加盐等
对加密秘钥要设计妥善的管理策略,防止内部人泄露
可多个人分别掌握一部分。多个机器分别存储一部分。更有硬件加密拆开损坏。
系统风控
对重要信息进行风控,识别风险请求,不断完善识别规则。
安全漏洞定期扫描
评论