SCW图标
英雄背景无分隔线
博客

程序员征服安全:分享与学习系列-代码注入

Jaap Karan Singh
发表于 2019 年 5 月 16 日
最后更新于 2026年3月9日

代码注入攻击是许多网站和应用程序将遇到的最常见,也是最危险的攻击之一。它们在复杂程度和构成的危险方面无所不包,但是几乎所有接受用户输入的网站或应用程序都可能存在漏洞。实际上,几乎每个网络安全捍卫者在职业生涯的某个时刻都需要应对这种攻击,并且可能会多次努力应对。

每当应用程序或网站接受用户的输入时,就会发生代码注入攻击。这可以像提供搜索功能或要求用户输入其身份信息一样简单。当恶意用户在开放字段中输入代码而不是普通文本输入时,就会发生攻击。他们的目标是让服务器将输入误认为是有效的代码,然后执行攻击者想要的任何函数。

虽然代码注入攻击极为常见,但可用于阻止它们的可用防御措施也非常普遍。在本集中,我们将学习:

  • 它们是如何工作的
  • 为什么它们如此危险
  • 如何设置防御措施来阻止他们。

攻击者如何使用代码注入?

尽管有关代码注入攻击的具体细节因所使用的编程语言而异,但只要允许用户输入数据,任何应用程序或网站都可能容易受到攻击。已经触发了针对 SQL、HTML、XML、CSS 和其他所有常见编程语言的代码注入攻击。

首先,攻击者必须在应用程序中找到易受攻击的代码,通常是在允许用户输入自己的输入时。例如,此代码采用 PHP eval () 函数并将其传递给用户进行修改,而无需对返回字符串进行任何形式的验证。

$myvar = “变量名”;
$x = $_GET [arg];
eval (“\ $myvar =\ $x;”);

聪明的攻击者可以轻松地将自己的字符串添加到 eval 函数中,甚至可以选择执行系统命令。

/index.php?arg=1;系统(ID)

值得注意的是,虽然代码注入攻击可能涉及发送系统命令,但它们不仅限于发送系统命令。实际上,在代码注入攻击中,黑客仅受语言本身功能的限制。在我们的示例中,攻击者可以对目标系统进行编程,使其几乎可以执行 PHP 框架允许的任何操作。

为什么代码注入攻击如此危险?

代码注入攻击可能极其危险,具体取决于攻击者的技能。他们可以做编程语言允许的任何事情,这使他们与应用程序的程序员处于同等地位。攻击者实际上可以编写自己的应用程序并让它在目标环境中执行。

即使是技能较低的攻击者也可能很危险。他们无需编写自己的应用程序或代码字符串,只需命令目标系统接受并安装预编程的恶意软件即可。这可能导致网站污损、勒索软件攻击,甚至成为针对网站用户的网络钓鱼活动的基础。

在大多数情况下,代码注入攻击用于窃取用户列表和密码等信息,或者对旨在进一步入侵的系统进行宝贵的侦察。但是请注意,熟练的编码人员几乎可以通过代码注入攻击做任何事情,这就是为什么必须发现代码注入攻击的每个潜在实例并将其从您的环境中删除的原因。

不要相信任何人!(或者至少,不是用户)

在消除代码注入攻击漏洞时,首先要注意的是任何要求或允许用户输入的地方。在任何情况下,用户输入的任何内容都不可信任。如果你允许用户在不进行过滤或检查的情况下进行输入,那么你基本上是在邀请攻击者免费尝试入侵你的系统甚至网络。

尽管并非总是可能的,但阻止代码注入攻击的最佳方法是防止函数直接执行或解释用户输入。也许可以让用户选择静态选项,而不是自由输入自己的查询,应用程序编程为只接受这些有限的选择是有效的。这样做可能并不总是合适的,但尽可能地使用它可以在代码注入开始之前消除代码注入。

对于用户需要输入自己的输入的区域,必须严格控制这些数据。假设一切都是潜在的攻击是个不错的起点。在客户端和服务器端强制执行最低权限策略,例如只读用户访问权限,可能会阻止大多数代码的执行。

另一个好的防御措施是对所有用户输入的内容实施应用程序范围的过滤和清理。开发人员多年来一直意识到代码注入攻击,每种框架和语言都有经过验证的过滤器库。应用这些过滤器时,请务必不仅针对明显的用户输入区域或 Get 和 Post 命令等常见参数,还要针对 Cookie 和 HTTP 标头进行筛选。

对代码注入应用更正

从环境中移除不必要的用户输入区域,执行最低权限原则,并使用最新的过滤和清理工具来检查和检测潜在的攻击,可以关闭这个危险漏洞的大门。保持从不信任用户输入的心态也将有助于你向前迈进。做完所有这些,你就能在这类危险的攻击中领先一步。

要进一步阅读,你可以看看 OWASP 写在上面 代码注入。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

现在正面注入人脸密码。在我们的游戏化训练平台上接受挑战: [从这里开始]

查看资源
查看资源

代码注入攻击是许多网站和应用程序将遇到的最常见,也是最危险的攻击之一。它们在复杂性和构成的危险方面无所不包,但是几乎所有接受用户输入的网站或应用程序都可能存在漏洞。

对更多感兴趣?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年5月16日发布

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

分享到:
领英品牌社交x 标志

代码注入攻击是许多网站和应用程序将遇到的最常见,也是最危险的攻击之一。它们在复杂程度和构成的危险方面无所不包,但是几乎所有接受用户输入的网站或应用程序都可能存在漏洞。实际上,几乎每个网络安全捍卫者在职业生涯的某个时刻都需要应对这种攻击,并且可能会多次努力应对。

每当应用程序或网站接受用户的输入时,就会发生代码注入攻击。这可以像提供搜索功能或要求用户输入其身份信息一样简单。当恶意用户在开放字段中输入代码而不是普通文本输入时,就会发生攻击。他们的目标是让服务器将输入误认为是有效的代码,然后执行攻击者想要的任何函数。

虽然代码注入攻击极为常见,但可用于阻止它们的可用防御措施也非常普遍。在本集中,我们将学习:

  • 它们是如何工作的
  • 为什么它们如此危险
  • 如何设置防御措施来阻止他们。

攻击者如何使用代码注入?

尽管有关代码注入攻击的具体细节因所使用的编程语言而异,但只要允许用户输入数据,任何应用程序或网站都可能容易受到攻击。已经触发了针对 SQL、HTML、XML、CSS 和其他所有常见编程语言的代码注入攻击。

首先,攻击者必须在应用程序中找到易受攻击的代码,通常是在允许用户输入自己的输入时。例如,此代码采用 PHP eval () 函数并将其传递给用户进行修改,而无需对返回字符串进行任何形式的验证。

$myvar = “变量名”;
$x = $_GET [arg];
eval (“\ $myvar =\ $x;”);

聪明的攻击者可以轻松地将自己的字符串添加到 eval 函数中,甚至可以选择执行系统命令。

/index.php?arg=1;系统(ID)

值得注意的是,虽然代码注入攻击可能涉及发送系统命令,但它们不仅限于发送系统命令。实际上,在代码注入攻击中,黑客仅受语言本身功能的限制。在我们的示例中,攻击者可以对目标系统进行编程,使其几乎可以执行 PHP 框架允许的任何操作。

为什么代码注入攻击如此危险?

代码注入攻击可能极其危险,具体取决于攻击者的技能。他们可以做编程语言允许的任何事情,这使他们与应用程序的程序员处于同等地位。攻击者实际上可以编写自己的应用程序并让它在目标环境中执行。

即使是技能较低的攻击者也可能很危险。他们无需编写自己的应用程序或代码字符串,只需命令目标系统接受并安装预编程的恶意软件即可。这可能导致网站污损、勒索软件攻击,甚至成为针对网站用户的网络钓鱼活动的基础。

在大多数情况下,代码注入攻击用于窃取用户列表和密码等信息,或者对旨在进一步入侵的系统进行宝贵的侦察。但是请注意,熟练的编码人员几乎可以通过代码注入攻击做任何事情,这就是为什么必须发现代码注入攻击的每个潜在实例并将其从您的环境中删除的原因。

不要相信任何人!(或者至少,不是用户)

在消除代码注入攻击漏洞时,首先要注意的是任何要求或允许用户输入的地方。在任何情况下,用户输入的任何内容都不可信任。如果你允许用户在不进行过滤或检查的情况下进行输入,那么你基本上是在邀请攻击者免费尝试入侵你的系统甚至网络。

尽管并非总是可能的,但阻止代码注入攻击的最佳方法是防止函数直接执行或解释用户输入。也许可以让用户选择静态选项,而不是自由输入自己的查询,应用程序编程为只接受这些有限的选择是有效的。这样做可能并不总是合适的,但尽可能地使用它可以在代码注入开始之前消除代码注入。

对于用户需要输入自己的输入的区域,必须严格控制这些数据。假设一切都是潜在的攻击是个不错的起点。在客户端和服务器端强制执行最低权限策略,例如只读用户访问权限,可能会阻止大多数代码的执行。

另一个好的防御措施是对所有用户输入的内容实施应用程序范围的过滤和清理。开发人员多年来一直意识到代码注入攻击,每种框架和语言都有经过验证的过滤器库。应用这些过滤器时,请务必不仅针对明显的用户输入区域或 Get 和 Post 命令等常见参数,还要针对 Cookie 和 HTTP 标头进行筛选。

对代码注入应用更正

从环境中移除不必要的用户输入区域,执行最低权限原则,并使用最新的过滤和清理工具来检查和检测潜在的攻击,可以关闭这个危险漏洞的大门。保持从不信任用户输入的心态也将有助于你向前迈进。做完所有这些,你就能在这类危险的攻击中领先一步。

要进一步阅读,你可以看看 OWASP 写在上面 代码注入。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

现在正面注入人脸密码。在我们的游戏化训练平台上接受挑战: [从这里开始]

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“分析”Cookie。完成后,可以随意再次禁用它们。

代码注入攻击是许多网站和应用程序将遇到的最常见,也是最危险的攻击之一。它们在复杂程度和构成的危险方面无所不包,但是几乎所有接受用户输入的网站或应用程序都可能存在漏洞。实际上,几乎每个网络安全捍卫者在职业生涯的某个时刻都需要应对这种攻击,并且可能会多次努力应对。

每当应用程序或网站接受用户的输入时,就会发生代码注入攻击。这可以像提供搜索功能或要求用户输入其身份信息一样简单。当恶意用户在开放字段中输入代码而不是普通文本输入时,就会发生攻击。他们的目标是让服务器将输入误认为是有效的代码,然后执行攻击者想要的任何函数。

虽然代码注入攻击极为常见,但可用于阻止它们的可用防御措施也非常普遍。在本集中,我们将学习:

  • 它们是如何工作的
  • 为什么它们如此危险
  • 如何设置防御措施来阻止他们。

攻击者如何使用代码注入?

尽管有关代码注入攻击的具体细节因所使用的编程语言而异,但只要允许用户输入数据,任何应用程序或网站都可能容易受到攻击。已经触发了针对 SQL、HTML、XML、CSS 和其他所有常见编程语言的代码注入攻击。

首先,攻击者必须在应用程序中找到易受攻击的代码,通常是在允许用户输入自己的输入时。例如,此代码采用 PHP eval () 函数并将其传递给用户进行修改,而无需对返回字符串进行任何形式的验证。

$myvar = “变量名”;
$x = $_GET [arg];
eval (“\ $myvar =\ $x;”);

聪明的攻击者可以轻松地将自己的字符串添加到 eval 函数中,甚至可以选择执行系统命令。

/index.php?arg=1;系统(ID)

值得注意的是,虽然代码注入攻击可能涉及发送系统命令,但它们不仅限于发送系统命令。实际上,在代码注入攻击中,黑客仅受语言本身功能的限制。在我们的示例中,攻击者可以对目标系统进行编程,使其几乎可以执行 PHP 框架允许的任何操作。

为什么代码注入攻击如此危险?

代码注入攻击可能极其危险,具体取决于攻击者的技能。他们可以做编程语言允许的任何事情,这使他们与应用程序的程序员处于同等地位。攻击者实际上可以编写自己的应用程序并让它在目标环境中执行。

即使是技能较低的攻击者也可能很危险。他们无需编写自己的应用程序或代码字符串,只需命令目标系统接受并安装预编程的恶意软件即可。这可能导致网站污损、勒索软件攻击,甚至成为针对网站用户的网络钓鱼活动的基础。

在大多数情况下,代码注入攻击用于窃取用户列表和密码等信息,或者对旨在进一步入侵的系统进行宝贵的侦察。但是请注意,熟练的编码人员几乎可以通过代码注入攻击做任何事情,这就是为什么必须发现代码注入攻击的每个潜在实例并将其从您的环境中删除的原因。

不要相信任何人!(或者至少,不是用户)

在消除代码注入攻击漏洞时,首先要注意的是任何要求或允许用户输入的地方。在任何情况下,用户输入的任何内容都不可信任。如果你允许用户在不进行过滤或检查的情况下进行输入,那么你基本上是在邀请攻击者免费尝试入侵你的系统甚至网络。

尽管并非总是可能的,但阻止代码注入攻击的最佳方法是防止函数直接执行或解释用户输入。也许可以让用户选择静态选项,而不是自由输入自己的查询,应用程序编程为只接受这些有限的选择是有效的。这样做可能并不总是合适的,但尽可能地使用它可以在代码注入开始之前消除代码注入。

对于用户需要输入自己的输入的区域,必须严格控制这些数据。假设一切都是潜在的攻击是个不错的起点。在客户端和服务器端强制执行最低权限策略,例如只读用户访问权限,可能会阻止大多数代码的执行。

另一个好的防御措施是对所有用户输入的内容实施应用程序范围的过滤和清理。开发人员多年来一直意识到代码注入攻击,每种框架和语言都有经过验证的过滤器库。应用这些过滤器时,请务必不仅针对明显的用户输入区域或 Get 和 Post 命令等常见参数,还要针对 Cookie 和 HTTP 标头进行筛选。

对代码注入应用更正

从环境中移除不必要的用户输入区域,执行最低权限原则,并使用最新的过滤和清理工具来检查和检测潜在的攻击,可以关闭这个危险漏洞的大门。保持从不信任用户输入的心态也将有助于你向前迈进。做完所有这些,你就能在这类危险的攻击中领先一步。

要进一步阅读,你可以看看 OWASP 写在上面 代码注入。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

现在正面注入人脸密码。在我们的游戏化训练平台上接受挑战: [从这里开始]

观看网络研讨会
开始吧
了解更多

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
对更多感兴趣?

分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年5月16日发布

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

分享到:
领英品牌社交x 标志

代码注入攻击是许多网站和应用程序将遇到的最常见,也是最危险的攻击之一。它们在复杂程度和构成的危险方面无所不包,但是几乎所有接受用户输入的网站或应用程序都可能存在漏洞。实际上,几乎每个网络安全捍卫者在职业生涯的某个时刻都需要应对这种攻击,并且可能会多次努力应对。

每当应用程序或网站接受用户的输入时,就会发生代码注入攻击。这可以像提供搜索功能或要求用户输入其身份信息一样简单。当恶意用户在开放字段中输入代码而不是普通文本输入时,就会发生攻击。他们的目标是让服务器将输入误认为是有效的代码,然后执行攻击者想要的任何函数。

虽然代码注入攻击极为常见,但可用于阻止它们的可用防御措施也非常普遍。在本集中,我们将学习:

  • 它们是如何工作的
  • 为什么它们如此危险
  • 如何设置防御措施来阻止他们。

攻击者如何使用代码注入?

尽管有关代码注入攻击的具体细节因所使用的编程语言而异,但只要允许用户输入数据,任何应用程序或网站都可能容易受到攻击。已经触发了针对 SQL、HTML、XML、CSS 和其他所有常见编程语言的代码注入攻击。

首先,攻击者必须在应用程序中找到易受攻击的代码,通常是在允许用户输入自己的输入时。例如,此代码采用 PHP eval () 函数并将其传递给用户进行修改,而无需对返回字符串进行任何形式的验证。

$myvar = “变量名”;
$x = $_GET [arg];
eval (“\ $myvar =\ $x;”);

聪明的攻击者可以轻松地将自己的字符串添加到 eval 函数中,甚至可以选择执行系统命令。

/index.php?arg=1;系统(ID)

值得注意的是,虽然代码注入攻击可能涉及发送系统命令,但它们不仅限于发送系统命令。实际上,在代码注入攻击中,黑客仅受语言本身功能的限制。在我们的示例中,攻击者可以对目标系统进行编程,使其几乎可以执行 PHP 框架允许的任何操作。

为什么代码注入攻击如此危险?

代码注入攻击可能极其危险,具体取决于攻击者的技能。他们可以做编程语言允许的任何事情,这使他们与应用程序的程序员处于同等地位。攻击者实际上可以编写自己的应用程序并让它在目标环境中执行。

即使是技能较低的攻击者也可能很危险。他们无需编写自己的应用程序或代码字符串,只需命令目标系统接受并安装预编程的恶意软件即可。这可能导致网站污损、勒索软件攻击,甚至成为针对网站用户的网络钓鱼活动的基础。

在大多数情况下,代码注入攻击用于窃取用户列表和密码等信息,或者对旨在进一步入侵的系统进行宝贵的侦察。但是请注意,熟练的编码人员几乎可以通过代码注入攻击做任何事情,这就是为什么必须发现代码注入攻击的每个潜在实例并将其从您的环境中删除的原因。

不要相信任何人!(或者至少,不是用户)

在消除代码注入攻击漏洞时,首先要注意的是任何要求或允许用户输入的地方。在任何情况下,用户输入的任何内容都不可信任。如果你允许用户在不进行过滤或检查的情况下进行输入,那么你基本上是在邀请攻击者免费尝试入侵你的系统甚至网络。

尽管并非总是可能的,但阻止代码注入攻击的最佳方法是防止函数直接执行或解释用户输入。也许可以让用户选择静态选项,而不是自由输入自己的查询,应用程序编程为只接受这些有限的选择是有效的。这样做可能并不总是合适的,但尽可能地使用它可以在代码注入开始之前消除代码注入。

对于用户需要输入自己的输入的区域,必须严格控制这些数据。假设一切都是潜在的攻击是个不错的起点。在客户端和服务器端强制执行最低权限策略,例如只读用户访问权限,可能会阻止大多数代码的执行。

另一个好的防御措施是对所有用户输入的内容实施应用程序范围的过滤和清理。开发人员多年来一直意识到代码注入攻击,每种框架和语言都有经过验证的过滤器库。应用这些过滤器时,请务必不仅针对明显的用户输入区域或 Get 和 Post 命令等常见参数,还要针对 Cookie 和 HTTP 标头进行筛选。

对代码注入应用更正

从环境中移除不必要的用户输入区域,执行最低权限原则,并使用最新的过滤和清理工具来检查和检测潜在的攻击,可以关闭这个危险漏洞的大门。保持从不信任用户输入的心态也将有助于你向前迈进。做完所有这些,你就能在这类危险的攻击中领先一步。

要进一步阅读,你可以看看 OWASP 写在上面 代码注入。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

现在正面注入人脸密码。在我们的游戏化训练平台上接受挑战: [从这里开始]

目录

下载PDF
查看资源
对更多感兴趣?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子