10 个常见的网站安全漏洞
对于世界上这么多公司来说,网站安全漏洞并不是管理的重点,直到他们面临严重的漏洞。实际上,网络安全和安全问题应该是一个优先事项,因为如今我们实际上生活在一个非常数字化的世界中。安全漏洞是一个严重的问题,需要相应地解决。
10 个常见的网站安全漏洞
1. 注入漏洞
如果在过滤不受信任的输入时出现经典故障,则会发生这些情况。当未过滤的数据传递到 SQL 服务器、LDAP 服务器或称为 XSS 的浏览器时,可能会发生注入缺陷。当数据进入 SQL 服务器时,该事件称为 SQL 注入。当它进入 LDAP 服务器时,我们调用 LDAP 注入。
这里主要的网站安全漏洞是攻击者或黑客也可以向这些实体注入或发送命令,导致数据丢失。这会导致客户端的浏览器被劫持。
每当您的应用程序从不受信任的来源接收到某些内容时,就必须对其进行过滤,否则就会成为网络安全问题。此外,永远不应使用列入黑名单的项目或数据,因为它很容易被绕过。许多可用的防病毒软件或应用程序都提供了黑名单失败的例子。
但是,针对此安全漏洞的保护是可能的。这只是小心输入的问题。在注入之前对其进行适当的过滤,并决定它是否可以信任。
2. 破解认证
此类别包括在身份验证中断事件期间发生的任何问题或安全漏洞。这些类型的网站安全漏洞可能有不同的根源。
避免此 Web 安全问题的最简单方法是使用框架。如果您不喜欢滚动自己的代码,那么请了解可能存在哪些陷阱以防止或避免这种情况。
3. 跨站脚本
导致此安全漏洞的原因是黑客向您的 Web 应用程序提供 JavaScript 标签作为输入。然后,输入会发送给用户。用户设备中的浏览器执行它。它甚至可以像黑客创建链接并要求用户单击它一样简单。当用户单击该链接时,该页面将加载到他们的浏览器中并将 cookie 发送给黑客。
防止跨站脚本网站安全漏洞的方法,您需要做的就是确保您不会将HTML标签返回给您的客户端。这将保护您免受所有 HTML 注入,包括黑客发送纯 HTML 输入的攻击类型。
避免此类 Web 安全问题的另一种方法是使用可以去除所有 HTML 标记的正则表达式。但是这种方法可能有点冒险,因为某些浏览器可能会将损坏的 HTML 解释为没问题。最好的方法是将所有字符转换为对应的字符。
4. 不安全的直接对象引用
这是最常见的网站安全漏洞中的另一种。当您信任某些用户的输入,然后不得不付出代价或面临后果时,就会发生这种情况。直接对象引用是指向用户公开的文件或数据库。如果引用来自黑客,就会导致麻烦,这意味着授权没有强制执行,甚至可能被破坏。如果发生这种情况,黑客就可以访问他不应该拥有的数据,或者被允许采取他不应该采取的行动。
此 Web 安全问题的一个示例可能是有人向您发送名为“download.php”的文件。这个文件应该使您能够下载文件并使用 CGI 参数来标识文件的名称(例如 download.php?file=anything.txt)。可能是因为懒惰、粗心或错误,Web 开发人员没有在代码中添加授权。任何黑客现在都可以轻松使用它并下载您正在运行或有权访问的系统文件。它甚至可以包括备份、应用程序代码本身或您在服务器上放置的任何其他数据。
此类网站安全漏洞的另一个示例可能是在网站上重置密码的功能。此功能依赖于用户的输入来确定需要重置谁的密码。单击有效 URL 后,黑客可以简单地更改网页上的用户名字段,并将文本替换为“admin”之类的内容。
如果您始终如一地勤奋地进行用户授权,则可以避免此类网站漏洞。如果您在内部存储数据并停止依赖通过 CGI 参数传递的数据,这也将减少进入此类安全漏洞的机会。
5. 安全配置
由于我们生活在一个充满网站安全漏洞的世界中,错误配置的 Web 应用程序和服务器比完美配置的 Web 应用程序和服务器更常见。这为事情被搞砸和安全问题增加提供了场所和机会。由错误配置引起的安全问题的一些示例如下。
在启用调试时运行应用程序。
由于目录列表在服务器上处于活动状态,因此泄露了有价值的信息。
使用过时的软件,例如WordPress插件。
在您的设备上运行这么多不必要的服务。
不更改您首次在网站或应用程序上创建帐户时默认获得的密码或密钥。
防止这些网络安全问题的方法是建立一个自动化的“构建和部署”机制。
6. 敏感数据暴露
一些网站安全漏洞是资源保护和加密。我们都知道敏感数据必须始终加密,即使数据处于静止状态或处于某种形式的传输中。这个规则真的没有例外。
用户密码和信用卡信息是最敏感的数据类型,不应在未加密的情况下存储或传输。您应该始终保持密码散列。您不应该使用弱加密算法。始终在敏感 cookie 上保留安全标志。此外,受保护的数据不应存储在加密密钥旁边。
这些措施再怎么强调也不为过,因为它们将使您免受此类严重的网站漏洞的影响。
7. 缺少功能级访问控制
这是导致安全问题的另一个授权失败。当您在服务器上调用一个函数并且没有执行正确的授权时,就会出现一个问题,可以称为缺少函数级访问控制。很多时候,网站开发人员依赖于服务器端生成某种 UI 的可能性。他们假设客户端无法访问设备服务器未提供的任何功能。但实际上,黑客和攻击者总是可以通过创建“隐藏”功能来伪造请求。
例如,有一个管理面板,它的按钮仅存在于实际管理员用户的浏览器的 UI 中。但是,如果缺乏授权,攻击者很容易发现此功能并滥用它。
避免进入此类网站安全漏洞的简单方法是始终确保正确进行授权。
8. 跨站请求伪造
简而言之,这被称为 CSRF。当某些其他方试图访问浏览器并且浏览器被欺骗让该方滥用其权限时,就会发生这种情况。该第三方可能在浏览器内做一些事情来帮助攻击者。
这样做的方式是第三方网站向您的品牌网站发送请求,使用您的会话或您的 cookie 来欺骗浏览器是您。假设在任何时候,您都登录了您的银行应用程序或在线银行网站,并且该网站面临此类网站安全漏洞,您打开的第二个选项卡可能会滥用凭据并将其访问权限提供给攻击者。这会导致混淆代理错误。在这种情况下,代理被定义为滥用会话 cookie 代表攻击者做某事的浏览器。
避免此类网站漏洞的方法是将密钥或令牌存储在隐藏且无法从任何第三方网站访问的表单字段中。
9. 使用已知漏洞的组件
这更像是一个网站维护问题。这种网站漏洞发生在网站被拥有的情况下,因为第三方应用程序长时间未打补丁。这种情况一直发生在 WordPress 插件上。
10. 未经验证的重定向和转发
这只是导致网站安全漏洞的另一个输入过滤问题。假设一个网站有一个模块“redirect.php”。它应该采用 GET 参数形式的 URL。但是当有人操纵参数时,将在例如“targetsite.com”上创建一个新 URL。这个新链接会将用户重定向到“malwareinstall.com”。但是当这个链接在用户的浏览器上打开时,他们可能会认为它是一个安全可信的站点并点击它。实际上,单击该链接会将它们发送到恶意软件投放页面。这是未经验证的重定向或转发的示例。
避免此类安全问题的最佳方法是根本不使用重定向。