Web安全(owasp top 10)第一部分
1.注入
原理:
SQL注入的原理是将SQL代码伪装到输入参数中,传递到服务器解析并执行,最终达到欺骗服务器执行恶意的SQL命令。SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。
危害:
1.导致用户信息被泄露
2.服务器被入侵,获取服务器权限
SQL注入基本步骤:
1.判断是什么类型注入,有没有过滤关键字,是否能绕过
2.确定存在注入的表的列数以及表中数据那些字段可以显示出来
3.获取数据库版本,用户,当前连接的数据库等信息
4.获取数据库中所有表的信息
5.获取某个表的列字段信息
常用工具:
Sqlmap、Pangplin、Havij
防御手段:
1.对参数实行预编译,转义,填充等操作
2.严格约束参数校验
3.将提交的参数转换成字符串
4.使用安全API,参数化的接口或ORM工具
5.权限最小化
2.失效的身份认证和会话管理
原理:
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,暂时或永久的冒充其他用户的身份。
举例:
用户登陆后没有退出,而是关掉了浏览器,只要使用相同的浏览器,且会话没有及时销毁,就能访问。
危害:
1.用户被冒名顶替
2.敏感数据泄露
防御手段:
1.使用强大的认证和会话管理控制-OWASP的应用安全验证标准
2.使用简单集中标准化的认证方式
3.确保SSL在任何时候都会保护会话
4.使用服务端,安全,内置的会话管理,确保对于每次登录生成随机会话ID。会话ID不应该在URL中,且应该及时销毁。
3.敏感数据泄露
原理:
攻击者不是直接攻击密码,而是在传输过程中或从客户端窃取密钥、发起中间人攻击,或从服务器端窃取明文数据,还有可能由于管理员的安全性不高,使用弱密码,被攻击者暴力破解,进入到数据库拿到敏感信息。
举例:
攻击者将链接从https降为http,拦截用户发送的包,偷取其中cookie,进行重放攻击,劫持会话,从而获取用户隐私信息。他们也可以直接修改传输的包中的数据。
危害:
密码,财务数据,医疗数据等敏感信息泄露
防御手段:
1.对系统处理、存储或传输的数据分类,并根据分类进行访问控制
2.对重要数据进行加密存放,数据在传输过程中使用密文进行传输
3.及时清理没有用的敏感数据,只能使用指定用户访问敏感数据
4.XML外部实体注入攻击(XXE)
原理:
如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。
攻击手段:
通过提交或者修改XML文档,添加恶意代码进行攻击
防御措施:
1.尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化
2.禁止使用外部实体,例如libxml_disable_entity_loader(true)
3.过滤用户提交的XML数据,防止出现非法内容
4.及时打补丁,升级XML解释器以及使用的库
5.失效的访问控制
原理:
通过身份验证的用户,可以访问其他用户的相关信息,没有实施恰当的访问权限。攻击者可以利用这个漏洞去查看未授权的功能和数据。
危害:
访问用户的账户、敏感文件、获取和正常用户相同的权限等
防御手段:
1.除公有资源外,其他资源默认情况下拒绝访问
2.使用一次性的访问控制机制,并在整个应用程序中不断重用它们
3.建立访问控制模型以强制执行所有权记录,而不是接受用户创建、读取、更新或删除的任何记录
4.当用户注销后,服务器上的JWT令牌应失效