SCW アイコン
ヒーロー背景(区切りなし)
ブログ

安全编码指南是如何演变的

ピーテル・デ・クレマー
2017年9月15日 掲載
最終更新日: 2026年3月10日

上周我正在研究 Java Spring 中的漏洞,以更新我们的安全编码指南。我正在研究我们平台上现有的挑战,并通过在JSP页面中显示网址参数在XSS上发现了一些挑战。不正确的代码示例看起来与以下内容类似:

<input type="text" name="username" value="${param.username}">

正确的解决方案是完全删除 URL 参数,描述中提到,以正确的方式转义 URL 参数也是安全的。

现在,我的工作是以开发人员清楚的方式制定安全编码指南,并在编写安全代码的同时尽可能减少对他们的限制。在这种情况下,我更愿意让开发人员保留其预期功能,并建议他们通过转义 URL 参数来安全地执行此操作。这样,代码就不再包含 XSS 漏洞了。上面的例子可以这样保护:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

这是我们几天来的安全编码指南,直到我偶然发现了一个 关于表达式语言注入的 OWASP 页面。本页介绍如何滥用 Spring 表达式语言 (SpEL) 进行注入,从而产生一些严重影响,包括远程代码执行。我有责任弄清楚是否存在符合我们安全编码指南的代码仍然会受到此漏洞影响的情况。因此,我编写了一个快速测试应用程序来评估 SpEL 表达式,并测试了使用和不使用 Xml 转义的输入,看看能否找到一些无法捕捉到的场景。我做到了,有些恶意表达式不包含 XmleScape 捕获的任何字符。我在我们的 github 上发布了工作演示,你可以找到 这里

当然,我更新了我们的安全编码指南,现在内容是:“不要使用 Spring 表达语言 (SpEL) 显示或评估 URL 参数。”

此问题的总体影响很大,原因如下:-攻击者可以修改和调用应用程序服务器上的功能。-未经授权访问数据和功能,以及账户劫持和远程执行代码。-成功攻击带来的机密性和完整性问题。

https://www.owasp.org/index.php/Expression_Language_Injection

リソースを確認する
リソースを確認する

上周我正在研究 Java Spring 中的漏洞,以更新我们的安全编码指南。

もっと知りたいですか?

アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
ピーテル・デ・クレマー
2017年9月15日発行

アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者

共有する:
リンクトインのブランドソーシャルx ロゴ

上周我正在研究 Java Spring 中的漏洞,以更新我们的安全编码指南。我正在研究我们平台上现有的挑战,并通过在JSP页面中显示网址参数在XSS上发现了一些挑战。不正确的代码示例看起来与以下内容类似:

<input type="text" name="username" value="${param.username}">

正确的解决方案是完全删除 URL 参数,描述中提到,以正确的方式转义 URL 参数也是安全的。

现在,我的工作是以开发人员清楚的方式制定安全编码指南,并在编写安全代码的同时尽可能减少对他们的限制。在这种情况下,我更愿意让开发人员保留其预期功能,并建议他们通过转义 URL 参数来安全地执行此操作。这样,代码就不再包含 XSS 漏洞了。上面的例子可以这样保护:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

这是我们几天来的安全编码指南,直到我偶然发现了一个 关于表达式语言注入的 OWASP 页面。本页介绍如何滥用 Spring 表达式语言 (SpEL) 进行注入,从而产生一些严重影响,包括远程代码执行。我有责任弄清楚是否存在符合我们安全编码指南的代码仍然会受到此漏洞影响的情况。因此,我编写了一个快速测试应用程序来评估 SpEL 表达式,并测试了使用和不使用 Xml 转义的输入,看看能否找到一些无法捕捉到的场景。我做到了,有些恶意表达式不包含 XmleScape 捕获的任何字符。我在我们的 github 上发布了工作演示,你可以找到 这里

当然,我更新了我们的安全编码指南,现在内容是:“不要使用 Spring 表达语言 (SpEL) 显示或评估 URL 参数。”

此问题的总体影响很大,原因如下:-攻击者可以修改和调用应用程序服务器上的功能。-未经授权访问数据和功能,以及账户劫持和远程执行代码。-成功攻击带来的机密性和完整性问题。

https://www.owasp.org/index.php/Expression_Language_Injection

リソースを確認する
リソースを確認する

以下のフォームに記入してレポートをダウンロードしてください

当社は、当社の製品および/または関連するセキュリティコードに関する情報を送信するため、お客様の許可を得たいと考えております。お客様の個人情報は常に慎重に取り扱い、マーケティング目的で他社に販売することは決してありません。

提出
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「分析」Cookieを有効にしてください。完了後、いつでも再度無効にできます。

上周我正在研究 Java Spring 中的漏洞,以更新我们的安全编码指南。我正在研究我们平台上现有的挑战,并通过在JSP页面中显示网址参数在XSS上发现了一些挑战。不正确的代码示例看起来与以下内容类似:

<input type="text" name="username" value="${param.username}">

正确的解决方案是完全删除 URL 参数,描述中提到,以正确的方式转义 URL 参数也是安全的。

现在,我的工作是以开发人员清楚的方式制定安全编码指南,并在编写安全代码的同时尽可能减少对他们的限制。在这种情况下,我更愿意让开发人员保留其预期功能,并建议他们通过转义 URL 参数来安全地执行此操作。这样,代码就不再包含 XSS 漏洞了。上面的例子可以这样保护:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

这是我们几天来的安全编码指南,直到我偶然发现了一个 关于表达式语言注入的 OWASP 页面。本页介绍如何滥用 Spring 表达式语言 (SpEL) 进行注入,从而产生一些严重影响,包括远程代码执行。我有责任弄清楚是否存在符合我们安全编码指南的代码仍然会受到此漏洞影响的情况。因此,我编写了一个快速测试应用程序来评估 SpEL 表达式,并测试了使用和不使用 Xml 转义的输入,看看能否找到一些无法捕捉到的场景。我做到了,有些恶意表达式不包含 XmleScape 捕获的任何字符。我在我们的 github 上发布了工作演示,你可以找到 这里

当然,我更新了我们的安全编码指南,现在内容是:“不要使用 Spring 表达语言 (SpEL) 显示或评估 URL 参数。”

此问题的总体影响很大,原因如下:-攻击者可以修改和调用应用程序服务器上的功能。-未经授权访问数据和功能,以及账户劫持和远程执行代码。-成功攻击带来的机密性和完整性问题。

https://www.owasp.org/index.php/Expression_Language_Injection

ウェビナーを視聴する
始めましょう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

レポートを確認するデモを予約する
PDFをダウンロード
リソースを確認する
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
ピーテル・デ・クレマー
2017年9月15日発行

アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者

共有する:
リンクトインのブランドソーシャルx ロゴ

上周我正在研究 Java Spring 中的漏洞,以更新我们的安全编码指南。我正在研究我们平台上现有的挑战,并通过在JSP页面中显示网址参数在XSS上发现了一些挑战。不正确的代码示例看起来与以下内容类似:

<input type="text" name="username" value="${param.username}">

正确的解决方案是完全删除 URL 参数,描述中提到,以正确的方式转义 URL 参数也是安全的。

现在,我的工作是以开发人员清楚的方式制定安全编码指南,并在编写安全代码的同时尽可能减少对他们的限制。在这种情况下,我更愿意让开发人员保留其预期功能,并建议他们通过转义 URL 参数来安全地执行此操作。这样,代码就不再包含 XSS 漏洞了。上面的例子可以这样保护:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

这是我们几天来的安全编码指南,直到我偶然发现了一个 关于表达式语言注入的 OWASP 页面。本页介绍如何滥用 Spring 表达式语言 (SpEL) 进行注入,从而产生一些严重影响,包括远程代码执行。我有责任弄清楚是否存在符合我们安全编码指南的代码仍然会受到此漏洞影响的情况。因此,我编写了一个快速测试应用程序来评估 SpEL 表达式,并测试了使用和不使用 Xml 转义的输入,看看能否找到一些无法捕捉到的场景。我做到了,有些恶意表达式不包含 XmleScape 捕获的任何字符。我在我们的 github 上发布了工作演示,你可以找到 这里

当然,我更新了我们的安全编码指南,现在内容是:“不要使用 Spring 表达语言 (SpEL) 显示或评估 URL 参数。”

此问题的总体影响很大,原因如下:-攻击者可以修改和调用应用程序服务器上的功能。-未经授权访问数据和功能,以及账户劫持和远程执行代码。-成功攻击带来的机密性和完整性问题。

https://www.owasp.org/index.php/Expression_Language_Injection

目次

PDFをダウンロード
リソースを確認する
もっと知りたいですか?

アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

入門に役立つリソース

さらに多くの投稿
リソースセンター

入門に役立つリソース

さらに多くの投稿