60个 AI- writterPress 插件和 JavaScript 意外逃脱安全

2026年8月1日6 次浏览来源:Dev.to阅读原文

这篇文章有两分之一:一旦明显答案停止工作,"逃避你的输出"究竟意味着什么,然后是研究当前AI助手是否得到这个更难的版本正确.

它继续一系列关于当非专家问他们WordPress代码时,编码助理实际产生什么.

开头的一行经过审查,但仍留下一个洞: 有一个绕入值的逃避函数 。

为了找到它。

快速检讨通过.

现在准备。

点击时链接仍然运行.

从HTML文本中重要的字符中逃出,比如和.

它与一个危险的 URL 方案无关。

密码被逃脱了 它因错误的背景而逃脱。

从外部看,正确的逃离和错误的文字逃离看起来是一样的。

URL是一个不同的上下文,需要自己的逃脱者.

逃脱者是 , 它返回一个 URL 的空字符串 。

逃生者要逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃出逃 "在输入上注意安全,在输出上注意逃脱"是本系列封面的第一个帖子的规则,但"在输出上逃避"隐藏了第二个决定:哪个逃脱者.

答案取决于页面上的价值落地.

当值在标记之间登陆 Escaper 可见文本 () 在一个属性 () 一个 URL 插槽 (,) 中,它也执行一个安全方案 在一个包含 JavaScript () 的标记属性内, 由核心自己的文档将范围化到这个插槽中 在块( ) 内交给 JavaScript 的任何值, 它会写出自己的引文; 当值为不可信 HTML 时添加您想要保存的值, 如格式化的邮箱, 有明确的允许列表 6 函数, 每个任务 。

错误几乎从不"忘记逃跑".

它"因错误上下文而逃脱",上面的URL上是最干净的例子.

函数及其上下文是WordPress本身的;本表所补充的只是选择价值落地的习惯.

一行值得警告,因为WordPress自己的指导读取不同.

那页显示在一个街区。

核心自身对该函数的文档将它范围为标记属性,以它为例.

两人意见不一,这篇文章的后半部分是关于这个原因的.

简单的上下文不是这个系列找到滑子的地方.

更早的一次实验测试了 URL 大小写: 由于一个简单的"显示链接"任务, 8 跑出8 到达的 8 , 用于未及时.

所以研究必须去一个真正微妙的地方。

那个地方是JavaScript。

为什么 JavaScript 是硬个子 将一个值丢入内线脚本是普通的事情 : 如果包含 , 浏览器并不在意您在 JavaScript 字符串中的意思 。

HTML解析器扫描其关闭标记的元素的原始内容,找到一个,提前关闭,并解析以下内容为新的 HTML 。

这是一个突破:值会越出它的插槽,成为标记。

解析器比平面形式略为一般:它不考虑大小写而寻找匹配,然后是白空格,a或a,所以也关闭了标记.

中和精确的小写字符串是不够的 。

HTML 规格是这样定义脚本解析的,其中的一个细节驱动下面的一切:在脚本中,字符引用不解码.

保留文字文本。

它永远不会变回。

这一事实将安全方法与不安全方法分开。

在WordPress核心,PHP手册,以及一个通过真实函数运行有效载荷并打印字节的探针脚本上,下方每行的真相表都被验证.

浏览器接收出什么代码?

Raw contactation, 无法逃脱 是 否 (默认) 否 (在 PHP 中, 旗帜与 QQ 运算符结合 ) 。

用于表格可读性;这些旗帜的数值相同。 ) 两条安全的中行是研究的要点,它们出于不同的原因是安全的.

屏蔽断开并腐蚀值。

它从实体中逃出,进入和, 这些都是在脚本中的惰性。

但按照同样的规则,这些实体从未在那里解码,所以JavaScript strin

分享