我知道表单输入的value属性中不允许使用某些字符。例如,如果我将此属性单独封闭,我就无法安全地使用单引号。我可以在此属性中使用其他任何字符吗?
答案 0 :(得分:3)
除非另有说明,否则HTML元素的属性可能包含任何字符串值,包括空字符串。除非明确说明,否则对此类属性中可指定的文本没有限制。
value content属性给出input元素的默认值。当添加,设置或删除值内容属性时,如果控件的脏值标志为false,则用户代理必须将元素的值设置为值content属性的值(如果有),否则为空字符串,然后运行当前值清理算法(如果已定义)。
所以没有限制,但价值可能会被价值清理算法改变。
例如,如果我将此属性单独封闭,我就不能安全地使用单引号。
你可以。您无法使用 literal 单引号。你必须使用字符引用。
答案 1 :(得分:2)
应该转义其他一些字符,例如','和&amp ;.
代码值为“0”的字符在值字段中使用时会出现问题 - 如果在html文档中的任何位置使用它将会出现问题。 可能有其他控制字符有问题(如Ctrl-Z),但我不知道。
答案 2 :(得分:0)
用户可以在浏览器的输入中写入任何值,当你将不安全的字符串放入输入值时,js也会自动转义引号。但如果您使用这样的PHP打印价值:
<input type='text' value='<?php echo $_POST['someField']; ?>' name='someField'>
你将有xss安全例外(如果你传递'&gt; alert('some');进入输入并提交它,你将有js警报)
你可以使用PHP功能
htmlspecialchars($_POST['someField'], ENT_QUOTES)