常见安全漏洞和解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1身份认证安全
1.1.1弱密码
●密码长度6个字符以上
●密码字符必须包含大写字母、小写字母和数字,并进行密码复杂度检查
●强制定期更换密码
1.1.2密码存储安全
密码存储必须使用单向加密
单纯的md5,sha1容易被破解,需要添加随机的盐值salt
涉及支付及财产安全的需要更高的安全措施,单纯的密码加密已经不能解决问题。
可以考虑手机验证码、数字证书、指纹验证。
1.1.3密码传输安全
1.1.3.1密码前端加密
用户名、密码传输过程对称加密,可以使用密钥对的对称加密,前端使用公钥加密,后端使用私钥解密。
前端加密示例
注意:前端密码加密如果还用了md5加密的,先md5加密再rsa加密。
后端解密,省略了其他验证步骤
1.1.3.2启用https协议
登录页面、支付页面等高危页面强制https协议访问。
前端加密和https可以结合使用
1.2SQL注入
1.2.1描述
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应
用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
1.2.2解决办法
1.养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合。
2.不要把没有检查的用户输入直接拼接到SQL语句中,断绝SQL注入的注入点。
●SQL中动态参数全部使用占位符方式传参数。
正确
●如果不能使用占位符的地方一定要检查SQL中的特殊符号和关键字,或者启用用户输
入白名单,只有列表包含的输入才拼接到SQL中,其他的输入不可以。
1.2.3应急解决方案
nginx 过滤规则naxsi模块
标红部分就是SQL注入过滤规则启用级别。
基础滤规则已经级别定义省略,可自己定义。
1.3跨站点脚本攻击(XSS)
1.3.1描述
XSS(Cross Site Scripting,跨站脚本漏洞),是Web应用程序在将数据输出到网页的时候存在问题,导致攻击者可以将构造的恶意数据显示在页面的漏洞。
1.3.2解决办法
1养成编程习惯,检查用户输入,最大限度的限制用户输入字符集合。
2不要把用户输入直接显示到页面,不要相信用户的输入。
●编码把用户输入编码后输出
●富文本编辑器和直接显示编辑的HTML,项目总尽量不要开放,如果开放就要严格检查
XSS敏感HTML片段,并且严格控制用户权限,做好IP限制这些安全措施。
注意:所有XSS过滤器如果要保证过滤后HTML能正常浏览,都只能过滤部分已知的XSS攻击,开发HTML编辑始终存在风险和隐患。
1.3.3应急解决方案
web过滤器
web.xml
...
com.wondersgroup.wssip.framework.web.filter.IllegalCharacterFil ter
...
注意:这种方式效率低下,对应大数据提交响应很慢,不推荐。
HTML编辑器会被这个过滤器拦截,需要特殊处理。
nginx 过滤规则naxsi模块
基础滤规则已经级别定义省略,可自己定义。
默认的规则8级只要带<>符号的通通拦截。
1.4跨站请求伪造(CSRF)
1.4.1描述
CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作,有很大的危害性。
1.4.2解决办法
1.验证HTTP Referer 字段
2.在请求地址中添加token 并验证
服务器生成token,输入界面获取token,提交是带上token,服务器验证token
3.在HTTP 头中自定义属性并验证
1.4.3应急解决方案
web过滤器