2015-07-28 81 views
0

我知道某些字符在表单输入的值属性中是不允许的。例如,如果我将这个属性单独封闭,我不能安全地在其中使用单引号。有没有其他字符我不能在这个属性中使用?表单输入的值属性中允许使用什么字符

+0

您不能在使用单引号的属性中使用单引号,因为它在您解析并混淆HTML解析器之前会关闭该属性。这并不意味着不允许使用单引号。用双引号和单引号在内的属性是好还是转义他们,所以他们不关闭属性。我不知道任何不允许使用该属性的字符 – GillesC

回答

1

HTML 5

除非另有规定,属性HTML元素可以具有任意的字符串值,包括空字符串。除非明确指出,对于可以在这些属性中指定哪些文本没有限制。

HTML 5

值内容属性给出了输入元素的默认值。当值内容属性被添加,设置或删除时,如果控件的脏值标志为false,则用户代理必须将该元素的值设置为值内容属性的值(如果有),或者空字符串否则,然后运行当前值清理算法(如果已定义)。

所以没有限制,但价值可能会被价值净化算法改变。


举例来说,如果我用单接近这个属性,我无法安全地在它使用单引号。

你可以。您只能使用文字单引号。你必须使用字符引用。

+0

&也应该被转义 – Tivie

+0

@Tivie - 在HTML中需要转义的规则与属性值一致和不一致。 – Quentin

0

用户可以在浏览器的输入中写入任何值,当您将不安全的字符串放入输入值时,js也会自动转义引号。但是,如果你使用PHP这样的打印值:

<input type='text' value='<?php echo $_POST['someField']; ?>' name='someField'> 

您将有XSS安全异常(如果你通过“>警报(”一些');到输入并提交它,你将有JS警报) 你可以使用PHP函数 htmlspecialchars($_POST['someField'], ENT_QUOTES)

2

其他一些字符,例如”,0‘将导致问题在值字段中使用时”,和&应逸出

与代码值的字符。’ - 如它将会在html文档中的任何地方使用 可能有其他控制字符有问题(如Ctrl-Z),但我不知道。

相关问题