浏览器如何处理引号(单引号、双引号)作为表单的输入

How does the browser handle quotes (single, double) as the input to a form?

本文关键字:表单 输入 何处理 处理 浏览器 单引号      更新时间:2023-09-26

假设用户在表单中输入以下内容:

I'd like to "eat" something.

这个短语包含一个'和两个"。如果我直接把它写为JS字符串,我必须转义'以防止我的字符串提前终止:

var phrase = 'I''d like to "eat" something'

当用户(或潜在的恶意行为者)将'"输入到表单并将其保存到变量中时,浏览器的行为是什么?字符会自动转义吗?

编辑 16/04/14 :改这个问题。

它运行在UI中显示类型化数据所需的任何内部代码。

如果你通过JS和DOM访问数据,那么它会给你一个数据结构(字符串),这些字符在数据中表示。

如果您提交一个表单,它将对数据进行编码(根据表单元素上的enctype属性指定的编码),并将其放入HTTP请求中。


在编写代码时,您需要担心转义具有特殊含义的字符,因为有些字符在代码中具有特殊含义。

用户输入没有特殊的意义,除非你开始把它作为代码(例如通过eval它,或与其他代码(如SQL或HTML)混合,并把它放在某个地方,代码将被解析(如发送到数据库服务器或把它放在HTTP响应))。

在表单中输入它作为用户是没有问题的。当它被发送到服务器时,浏览器将自动对其进行编码。问题是在HTML源代码中有一个像这样的默认值:

<input type="text" value="I&#39;d like to &quot;eat&quot; something"/>

必须对这些值进行编码,以使其不会破坏HTML。