如何正确转义HTML表单上的密码字段


How to properly escape password field on HTML form?

与文本输入相比,密码输入字段通常接受更大范围的字符。在HTML表单上转义输入的正常方法包括对输入内容使用htmlspecialchars($_POST['content'])

如果在密码更新过程验证失败的情况下,我需要在HTML表单上重新填充新密码,该怎么办?像'> yeah这样的东西会导致表单故障,使用htmlspecialchars会产生一个完全不同的密码。

有什么建议吗?

html部分如下所示:

<INPUT type=password name=password1 value=''&gt;&lt;script&gt;try' size=15 maxlength=15>
对应的php代码:
function h($str) {echo htmlspecialchars($str);}
echo "<INPUT type=password name=password1 value='", h(@$_POST['password1']), "' size=15 maxlength=15>";

表单输入字段显示空白。

问题在于我的htmlspecialchars,默认情况下不转义单引号。现在添加ENT_QUOTES参数允许对单引号进行转义并解决我的问题。decze和CodeCaster是正确的,htmlspecialchars不会更改密码。谢谢所有。

不,htmlspecialchars不会产生完全不同的密码。它将产生value="&gt; yeah",当浏览器解析时,它被读取为> yeah。密码字段在处理特殊或非特殊字符时没有任何特殊。

将显示逻辑与数据逻辑分离。

在html页面上显示数据之前,请使用htmlspecialchars()。如果您打算将其存储在数据库中,请使用适当的sql转义方法(如mysql_real_escape_string() .

)。顺便说一下,如果一个输入元素包含例如&gt,它将被视为>张贴;

您可以使用htmlspecialchars_decode()来解码您的密码。

http://www.php.net/manual/en/function.htmlspecialchars-decode.php

但是,如果密码错误,我不认为重新填充密码输入的原因,我也不认为它是安全的。我也希望你不要在数据库中以文本格式保存密码

在HTML表单上转义输入的正常方法包括在输入内容上使用htmlspecialchars($_POST['content'])。

那是不正常的,而且是错误的。
转义HTML通常用于输出,而不是用于输入。

如果在密码更新过程验证失败的情况下,我需要在HTML表单上重新填充新密码,该怎么办?

这是危险的做法,大多数服务要求用户在这种情况下重新输入密码。

在HTML表单上重新填充?

这里是HTML转义。与其他情况不同,当您要填充表单值时,HTML转义是强制性的