现实世界依靠燃料,虚拟世界依靠安全。在万维网中,安全总是意味着隐私,这是一个用词不当的说法。当我们说web应用程序是 安全这意味着有一个基本的可信级别的登录安全 ,以及一个应用程序在不徘徊或不铺路自己的行动路线的情况下预期执行的有效执行/操作数。
Web应用程序安全处理比用户名和密码盗窃更复杂的威胁。其中大部分与在应用程序运行时使用脚本语言执行后台任务有关,而用户不知道后台进程正在运行。其余的处理方式是用户以表单形式提供条目,处理输入的数据,或者用户单击从不明来源发送的恶意URL。可能性是无穷的。
应用程序开发人员认识到了web应用程序缺陷带来的危险,并建立了一个名为OWASP(Online web application Security Project)的社区。OWASP是一个非营利组织,是web应用程序安全的标准机构。OWASP社区包括世界各地的公司、教育组织和个人。
在对应用程序进行了多年的漏洞测试后,OWASP发现了十个使web应用程序易受攻击的安全漏洞。
针对web应用程序的十大威胁是:
1.注射: 当用户通过输入框以表单形式输入数据时,它将使用数据库(SQL、LDAP)存储和显示。它们通常出现在SQL、LDAP、Xpath或NoSQL查询中;操作系统命令;XML解析器、SMTP头、程序参数等。 在这些方法背后注入了Shell命令 攻击者可以访问操作系统和其他链接的外部程序来执行任何恶意任务。换句话说,SQL注入允许攻击者通过web应用程序将恶意代码转发到其他系统。这可能会诱使应用程序执行并执行未被有效用户/管理员指示运行的进程。它可能会导致数据丢失或损坏、缺乏责任感或拒绝访问。注入有时可能导致主机完全接管。
2.断开的身份验证和会话管理: 被破坏的身份验证和会话管理允许攻击者获取密码、令牌和会话ID等详细信息,从而使他们能够登录到该用户的帐户并模拟他们执行交易。 攻击者可以使用URL中公开的活动会话ID劫持帐户 。为了避免此类攻击,必须通过加密连接传递用户凭据,并使用哈希和加密的概念进行存储。必须执行会话ID超时和身份验证,以阻止此类威胁。在忘记密码的情况下,必须进行重新身份验证,以验证用户的身份。
3.跨站点脚本(XSS) :当用户在没有输入用户验证的情况下输入数据时,会发生这种情况。还有这个 未经正确验证(浏览器端脚本)就将不受信任的数据发送到应用程序 。下次当另一个用户访问该网站或运行同一应用程序时,他会看到该应用程序以攻击者希望的方式运行。恶意脚本可以访问cookie、会话令牌或浏览器保留并与该网站一起使用的任何其他敏感信息。这些脚本还可以重写HTML页面的内容。
4.不安全的直接对象引用: 当引用(对象、文件或数据库)被删除时,就会发生这种情况 暴露给未经验证访问权限(授权)的用户查看/修改/使用。 这些缺陷使攻击者能够破坏与修改后的参数相关的所有数据。一旦攻击者找到进入应用程序的方法,他很可能会找到一种方法来深入挖掘并破坏任何可能的数据。 例子: 当只有管理员有权查看/使用/修改数据时,授予所有用户的访问权限。
5.安全配置错误: 应用程序、应用程序服务器、web服务器、数据库服务器都应该具有安全配置。开发人员和系统管理员需要共同努力,以确保 全部的 堆栈配置正确。如果系统因错误的安全配置而受损,数据可能会随着时间的推移被窃取或缓慢修改。
6.敏感数据暴露 信用卡详细信息等敏感数据可能无法得到最佳保护。攻击者可能会侵入此类数据库并使用这些数据执行事务。这包括数据和该数据的备份。攻击者无法直接破坏加密,他们窃取密钥、发起中间人攻击或从服务器或浏览器窃取明文数据。保护此类敏感数据的唯一方法是使用强加密算法。
7.缺少功能级访问控制 :应用程序和服务器上都必须存在功能级授权。大多数web应用程序都会在用户访问功能之前验证功能级别的访问权限。然而,如果不在服务器上执行访问控制检查,黑客将能够在没有适当授权的情况下侵入应用程序。 请求需要在两端进行验证,以防止伪造未经有效授权访问功能的请求 .
例子 :如果未实施功能级访问控制,匿名用户可以访问私有功能,或者普通用户可以使用特权功能。
8.跨站点请求伪造(CSRF): 也称为一键攻击或会话骑行。该漏洞允许攻击者迫使最终用户 在当前经过身份验证的web应用程序上执行不需要的操作 并向易受攻击的网站发送伪造的HTTP请求以及用户身份验证详细信息。它实际上会为受害者带来一种不想要的功能。 实例 :通过邮件收到的大多数可疑链接都是通过可疑或身份不明的来源。
9.使用具有已知漏洞的组件 :用于开发应用程序的某些工具可能存在安全缺陷, 这已经是攻击者已知的事实和常识 .实施此类工具是不可取的,因为它可能会导致上述大多数缺陷。攻击者知道某个组件的弱点,因此他可能知道应用程序的其他特定区域因该漏洞而易受攻击。几乎每个应用程序都有这些问题,因为大多数开发团队并不关注确保他们的组件/库是最新的。在许多情况下,开发人员甚至不知道他们正在使用的所有组件,更不用说它们的版本了。组件依赖性会让事情变得更糟。
10.无效重定向和转发: Web应用程序可能会将用户重定向或转发到其他网站。 攻击者可能会将用户转发到未经授权的页面,或将其重定向到恶意软件站点 或者欺骗用户泄露密码等敏感信息。由于恶意链接被修改为与原始网站完全相同,网络钓鱼尝试的外观可能更可信。
本文由 瓦尔沙 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。