如何保护您的网站免受远程代码执行

[ad_1]

什么是远程代码执行?

远程代码执行,也称为代码注入,是黑客入侵网站的最常见方式之一。 该术语涵盖了具有一个共同点的多种技术。 攻击者使用通常为普通用户保留的数据提交方法,将他们的代码在服务器眼中视为合法代码。

被黑客入侵是任何服务器管理员面临的最大问题之一。 它可以使您的业务陷入停顿,暴露客户数据,最重要的是,根据损害的程度,损害企业的声誉。 如果您知道要查找什么,有多种方法可以保护您的网站免受攻击。

远程代码执行有哪些不同类型?

SQL注入

让我们看一下远程代码执行的几个常见示例。 其中许多漏洞利用了 SQL 语句的构造方式。 在创建从数据库读取用户名的应用程序时,开发人员可能会尝试使用这样的代码来搜索特定的用户名:

SELECT * FROM users WHERE name="username"

您可能会问,该查询有什么问题?

任何访问者,即使是那些怀有恶意的访问者,都可以输入用户名。 例如,他们可以输入 ‘OR ‘1’=’1′ –,从而导致执行如下所示的 sql 语句的查询。

SELECT * FROM users WHERE name="" OR '1'='1' --'

现在,假设我们的应用程序在数据库中搜索用户名并选择名称为空的字段。 当数字 1 等于 1 时,第二部分始终为真。 这将最终提供数据库中的每个用户名。

像这样的数据泄漏并不是 SQL 注入的唯一问题。 潜在的攻击者可能会向您的数据库发送多个命令,这可能会删除或覆盖数据。

跨站脚本

跨站点脚本是另一个影响访问者而非服务器的远程代码执行漏洞。 在网页中,内容和代码以相同的方式呈现。 浏览器可以区分代码,因为它包含在

跨站点脚本不会是一个主要问题,如果它 只要 在攻击者的浏览器中执行。 但是,当它被公开(例如评论框)时,它也会影响看到该内容的任何访问者。 凭借执行任何远程代码的能力,攻击者可以窃取密码或冒充其他用户。 这个视频 显示了此类攻击的逐步分解,该攻击在几年前影响了 Twitter 的 TweetDeck 平台。

目录遍历

这种攻击不是针对应用程序本身,甚至不是针对访问者。 这里的主要目标是网站本身。 此漏洞依赖于文件在服务器文件系统上的存储方式。

通常,数据存储在 /home/user/public_html 等目录中。 此目录中的脚本可以使用相对路径访问文件,例如 wp-admin/index.php 引用 /home/user/public_html/wp-admin/index.php。 如果脚本被配置为访问当前目录之外的文件,它们可以通过添加一个“../”来实现这一点,它指的是当前目录之上的目录。 例如,此目录模式 /home/user/public_html/../ 与 /home/user/ 相同。

当允许脚本上传或读取自定义文件名时,攻击者可以指示您的应用程序遍历名称类似于 ../../../../../../../../ 的目录。 ./etc/passwd. 如果没有输入过滤等安全措施,这最终会让他们访问服务器上的核心文件。

防止远程代码执行?

以上所有信息均无意引起恐惧或恐吓。 然而,它旨在强调采取强有力的安全措施的重要性。 这些远程代码执行攻击可以通过提前了解和准备来阻止或减轻。 我们应该始终预测并了解我们的服务器如何处理用户提供的信息。

防止远程代码执行漏洞的最佳方法是拥有多层防御。 即使一层失败,我们仍然会受到保护。 以下是防止此类攻击的一些最常见步骤。

1. 验证用户输入

防止此类漏洞的首要位置是用户与您的应用程序交互的位置。 最简单的方法是过滤和删除任何不需要的字符。 另一种选择是通过转义来保留内容。

转义是我们告诉计算机获取一些看起来像代码的东西并将其视为常规文本而不是实际代码的过程。 例如,前面提到的

2. 使用成熟的软件

转义作为第一道防线非常有效,但除了脚本标签之外,浏览器或服务器还可以通过其他方式解释代码。 试图跟踪它们会变得非常复杂,非常快。 幸运的是,开发人员已经考虑到了这个问题。 使用信誉良好且值得信赖的内容管理系统或 CMS,例如 WordPress,为我们提供了解决方案。 这就是为什么必须保持软件最新的原因。 如果发现漏洞,开发人员会全天候工作以修补任何新发现的漏洞。 这包括主题和使用的任何插件。

如果我们使用自定义 CMS 应用程序,我们可以使用参数化查询避免 SQL 注入攻击。 这种类型的查询提前告诉应用程序我们将运行什么类型的查询。 然后它可以识别并删除可能尝试插入的额外命令。 相反,它发送原始查询,没有添加的字符串。

以下是使用参数化查询的上述示例:

$query=”SELECT * FROM users WHERE name = ?”
$results=$query.execute(“ ' OR '1'='1' --”)

这一次,数据库正确处理了 ' OR '1'='1'。 它将此查询视为一串文本,并意识到没有与该名称相关联的用户。

3. 最小权限原则

在极少数情况下,可能会出现您和 CMS 开发人员都不知道的 0 天漏洞。 我们仍然可以通过设置有关我们的应用程序可以做什么的智能规则来限制攻击者的力量。 例如,如果我们正在设计一个仅从数据库读取的应用程序,则无需授予应用程序写入或删除记录的权限。 这样,即使攻击者试图破坏脚本,他们也会遇到错误。

另一个最小权限原则有用的领域是在 PHP 函数中。 这些是在线攻击者的热门目标。 您的应用程序可能不需要的强大功能,例如 exec()(运行作为文本传递的代码)或 ini_set()(允许您从脚本中更改 PHP 设置),可以禁用以防止它们被使用被攻击者。

这个想法不仅适用于服务器端代码,还可以保护您网站面向公众的部分。

Content-Security-Policy 是现代浏览器使用的 HTTP 标头,用于确定允许在您的网站上加载哪些内容。 通过从我们的 Web 服务器或应用程序发送标头,我们可以指定可以运行的脚本类型和位置。 这种策略可以防止攻击者注入和使用他们的脚本。

您还可以通过使用 HttpOnly 或 SameSite=Strict 属性设置 cookie 来防止 cookie 被脚本读取或发送到其他站点的请求。 即使在最坏的情况下,攻击者的代码最终会在您的网站上运行,这也将阻止他们访问您用户的身份验证 cookie,从而显着限制他们可能造成的损害。

液体网络安全产品可以提供帮助!

在了解潜伏在那里的所有威胁时,感到有点不知所措是正常的。 幸运的是,我们随时为您提供帮助。 我们的托管托管产品将您网站的管理交给我们的专家。 同时,我们的服务器保护和 漏洞扫描 如果您仍想领导您的服务器管理,附加组件会让您更加安心。

我们以成为 Hosting™ 中最有帮助的人而自豪!

我们知识渊博的解决方案或经验丰富的托管顾问随时可以向您展示如何利用这些技术!

我们每天 24 小时、每周 7 天、一年 365 天均可通过我们的票务系统 [email protected]、电话(800-580-4986)或 在线聊天 或任何你喜欢的方法。

我们为您努力工作,以便您可以放松。

[ad_2]

Related Posts