日常检测经常常遇到的漏洞和防御建议

举例 Top 10 中Web应用程序最可能、最常见、最危险的安全漏洞。
不安全的访问控制
攻击者经常使用弱访问控制来绕过安全措施并获取敏感数据以及非法访问(包括访问管理员权限)。
在开发应用程序时,可以选择多种访问控制模型。为了减少安全问题,应在整个开发和测试过程中维护所选模型。如果访问权限定义不正确,则会导致访问控制中断,从而使攻击者能够访问、编辑或删除他们不应访问的数据、文件和帐户。
不安全的ID:在数据库中搜索内容时,我们通常使用唯一 ID。但是,如果 Web 服务器配置不正确,它可能会向用户提供请求的信息,即使他们不被允许访问它。
强制浏览:当用户尝试访问仍可访问但程序未引用的资源时,会发生强制浏览。
目录探索:当web网站将数据保存在许多文件中时,服务器可能会将文件名作为请求参数。
客户端缓存:浏览器将网站保存在其缓存中,以便在用户下次访问它们时更快地加载。
不安全访问控制防御措施
1、应该拒绝默认值,公共资源除外。
2、执行访问控制机制并在整个程序中处理它们。不要忘记尽可能少地使用跨域资源共享 。
3、模型访问限制应确保记录所有权,而不是允许用户创建、读取、更新或删除任何记录。
4、应用程序业务范围需要受域模型的约束。
5、从你的服务器中消除任何不必要的服务。
6、记录访问控制错误并在必要时提醒管理员。
7、对所有接入点使用多重身份验证 。
8、消除无意义的帐户。如果不再需要,终止用户帐户。
不安全的反序列化
1)介绍
序列化:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输(一般是以二进制的形式保存)的形式的过程。
反序列化: 与序列化的过程刚好相反。
(2)原理
序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。在java中有一个 ObjectOutputStream 类的writeobject方法可以实现序列化,而 ObjectInputStream 类的Readobject方法可以实现反序列化。该漏洞的原因出自于如果应用对恶意构造的用户输入的数据进行反序列化,这样就会产生非预期的对象,从而有可能产生远程代码执行。或者应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。
(3)防御措施

  1. 最安全的方法是不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体; 仅使用允许原始数据类型的序列化介质;
    2.反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕 过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充;
  2. 实施数字签名以检查序列化对象的完整性;
  3. 在反序列化期间强制执行严格的类型约束 ;
    5.在可能的情况下,在低权限环境中隔离和运行反序列化代码以防止未经授权的操作;
    6.记录反序列化异常和失败的案例;
    7.监视和/或限制来自反序列化的服务器或容器的任何传出或传入网络连接;
    8.隔离运行那些在低特权环境中反序列化的代码;
    9.对反序列化过程进行详尽的日志记录,监控反序列化过程,在发现疑似反序列化攻击时进行警报。

关键数据泄露
信息泄露通常发生在网站或应用程序无意中与无权阅读或访问它的人共享敏感信息时。重要数据泄露危险的主要原因是使用不充分的加密算法、不安全的密码存储技术、缺乏加密或使用不可靠的方法来生成和存储密钥。此外,即使在不必要的情况下,Web应用开发人员也经常存储敏感数据。
经常使用的示例包括密码、信用卡信息、医疗详细信息和商业机密。以明文形式发送或保存的数据或使用 MD5 或 SHA-1 等加密方法是最容易发生此类错误的两种情况。
任何可能被黑客利用以访问系统窃取身份或犯下其他网络犯罪的数据都应使用加密方式发送和保存。
加密失败应对措施
1、要保护网站发送的数据,请使用安全套接字层证书。
2、始终根据法规和隐私法对敏感数据进行识别和分类。
3、删除任何不需要立即保留的数据。
4、如果要存储任何敏感数据,请确保对敏感数据进行静态加密。
5、实施健全的密钥管理。
6、确保使用 TLS 和 SSL 等安全协议对传输中的任何数据进行加密。
7、可以使用HTTP Strict Transport Security 轻松地对您的应用程序 (HSTS) 实施加密。
8、不要缓存私人信息。
9、存储密码时始终使用多种加密技术。
注入攻击
注入攻击的主要目标是将 SQL、NoSQL、OS 和 LDAP 引入应用程序。由于缺乏输入验证和数据清理,可能会直接将输入暴露到查询中,当数据从不受信任的来源输入到程序中时,就会发生注入。
由于几乎每个网站都有这种注入漏洞,很明显它有多严重,因为所有接受参数作为输入的东西都容易受到注入的影响。
通过将恶意数据包含在命令或查询中,攻击者可以执行未经授权的指令或获取对机密信息的访问权限。这通常发生在网站忽略应用参数化、过滤、验证或清理用户输入时。
注入漏洞的巨大攻击面使得它们极其可怕(尤其是对于 XSS 和 SQL 注入漏洞)。但是,有几个值得信赖的工具可以免费访问,即使是新手攻击者也可以自动利用这些漏洞。
注入攻击防御措施
1、必须将数据与指令和查询分开,以 防止 SQL 注入类型。
2、绕过任何解释器或第三方程序,直接检查用户数据。
3、考虑切换到 对象关系映射(ORM) 技术是值得的。
4、对注入攻击的防御可能会从积极验证中受益匪浅。
5、应用输入清理和验证。
6、确保所有用户输入都被转义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值