美文网首页
常见Web安全漏洞及防范

常见Web安全漏洞及防范

作者: 程序员will | 来源:发表于2019-06-20 08:35 被阅读0次

    分享三种常见的安全漏洞

    输入输出验证不充分

    输入输出验证

    SQL注入

    定义

    SQL注入是SQL语句插入到传入参数的攻击,之后再将这些参数传递给SQL服务器加以解析并执行。

    成因

    代码中有拼接的SQL或HQL语句

    危害
    • 拖库:导致数据丢失、数据窃取、数据破坏或拒绝服务
    • 提权:完全接管操作系统
    防范

    思路:预处理和参数化查询

    • 预处理和参数化查询PreparedStatement

    使用相关的框架如Struts、Hibernate、Ibatis等

    • 执行严格的输入验证

    使用正规表达式,严格检查输入的类型、长度和内容

    跨站脚本攻击(XSS)

    定义

    跨站脚本攻击(XSS)通常是指攻击者利用网站程序对传入参数值过滤不足,输入可以显示在页面上对其他用户造成影响的HTML、JS恶意代码。

    成因
    • 传入值验证不严格、用户能够控制传入值
    • 未经处理直接输出到客户端网页中
    危害

    劫持用户会话、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等。

    防范

    思路:数据在输出时转义编码处理

    • 输出编码(输出至客户端前进行编码)

    输入验证或过滤(客户端及服务器端双向验证)

    • 严格输入验证:对用户输入的数据类型、大小、范围的验证,可避免输入危害的字符和冗余数据
    • 黑名单过滤

    恶意文件上传

    定义

    恶意文件上传是指攻击者通过修改上传功能程序的参数内容,从而达到上传恶意文件的目的

    成因

    未对上传文件类型和格式做合法性校验,导致攻击者可以上传WebShell恶意文件(.asp,.war,.php,.jsp等)

    危害

    可以获取Web服务器的控制权

    防范

    思路:上传文件进行白名单过滤(只允许需要的)

    • 文件类型、大小检查
    • 下载时直接文件名引用

    上传的文件以二进制形式下载,不提供直接访问

    • 上传目录禁止执行及独立保存位置

    指定上传文件目录(此路径应该在Web服务器限制为只读,禁止执行),文件存储到独立的文件服务器或数据库中。

    • 随机改写文件名和文件路径,使不可猜测

    逻辑设计缺陷

    逻辑设计缺陷

    业务逻辑漏洞

    定义

    业务逻辑漏洞是由于业务逻辑设计或流程设计不完整、不合理导致的业务相关的缺陷。

    成因

    业务逻辑漏洞是由于业务逻辑设计或流程设计不完整、不合理,客户端可以控制输入数据和流程、检查点

    危害
    • 信息泄露、越权访问、账号窃取等
    • 一般是全局问题,可能比常规的安全漏洞更加严重
    实例
    1. 资源耗尽

    短信、邮件等如果没有限制发送次数就会产生拒绝服务攻击

    1. 注册送优惠券

    手机用户注册可送优惠券,未限制每个手机次数

    1. 任意重置密码

    密码找回的凭证太弱,如只需填入一个四位或者六位的纯数字就可以重置密码,导致可以暴力破解;

    用户找回密码的邮箱或者手机号码被修改

    1. 绕过验证码

    12306输入完验证码提交订单时必须要等待4.8秒,可绕过验证码

    1. 任意邮箱绑定

    任意邮箱绑定账号(结合CSRF),验证码链接直接登陆。

    防范

    思路:业务流程需要有必要的控制参数,同时避免控制参数被绕过。

    • 防止绕过流程节点和检查参考(如token等)
    • 不需要用户操作或访问的数据避免发送到客户端(如验证码发送给客户端)
    • 验证所有输入(数字的边界、正负值等)
    • 防范资源消耗攻击(如短信等)、拒绝服务攻击(大规模数据查询,如搜索通配符)等

    失效的身份认证

    定义

    身份认证功能存在设计缺陷或功能薄弱,这就导致攻击者绕过认证,窃取密码、密钥、会话令牌或利用实施漏洞冒充其他用户身份

    成因

    身份认证方式薄弱,如弱密码、无验证码等

    逻辑设计缺陷导致可以重置任意用户密码

    危害

    绕过认证或窃取用户账户,特权账户会造成更大的破坏

    防范

    身份认证时第一道安全防线,身份认证需要防暴力破解、弱口令攻击。密码策略和验证码时互联网系统认证标配。

    • 密码策略

    一般系统:8字符以上,且进行弱密码检查,并禁止包含用户名

    重要系统:使用多种验证方式(如动态密码、短信等)

    • 首次登陆修改初始密码:首次登陆强制修改默认初始密码
    • 防密码暴力破解或猜解(或撞库):使用验证码登陆(如三次密码或账号尝试错误后出现)
    • 密码重置:验证旧密码或手机验证码
    • 邮箱/手机绑定:绑定操作需要用户确认(需要手工输入验证码)

    越权操作

    定义

    越权操作指对系统进行超越自己权限的操作;

    横向越权:非法获取同类用户权限

    纵向越权:非法获取管理员或特权用户权限

    成因

    缺乏对用户权限的判断,及隐藏URL失效

    危害

    越权可造成非授权用户对所有数据、功能进行操作

    防范

    思路:用户全部请求进行权限检查

    • 验证每次请求(URL、数据资源)的用户权限
    • 参数随机化(避免可预测)
    • 管理后台加强认证和访问控制(如IP地址限制)

    环境漏洞

    环境漏洞.png

    )]

    第三方代码或组件

    在使用第三方产品前,需要进行安全评估和版本筛选,从可信的网站(如官网下载),删除不必要的功能,并及时跟踪安全补丁。

    API接口安全

    接口安全认证

    应对接口访问进行认证(服务器端分配API KEY),如使用Token/openid防范非法访问;IP白名单限制。

    接口数据有效性检查

    应对接口数据有效性进行检查,防范重放攻击和代码注入攻击。

    接口数据加密传输

    应使用数据加密、数字签名等方式保证数据保密性和完整性

    接口访问权限及记录

    应对接口的访问权限、访问频次进行控制,并记录接口访问的日志。

    安全开发原则

    永不信任用户输入

    1. 对用户输入的有效性检查
    2. 前端+后端双向验证
    3. 避免执行用户输入数据

    最小攻击页面

    1. 最小权限
    2. 功能最小化(只实现需要功能)
    3. 输出最小化

    纵深防御

    1. Web应用安全
    2. 操作安全
    3. 中间件安全
    4. 数据库安全
    5. 网络安全
    6. 客户端、移动APP安全

    相关文章

      网友评论

          本文标题:常见Web安全漏洞及防范

          本文链接:https://www.haomeiwen.com/subject/dmbrqctx.html