好的,只是为了转发HTML文本输入值的数据转义“(双引号)?

时间:2010-09-24 02:29:47

标签: web-applications

可能是一个天真的问题,但我想知道我是否有数据将被发送到浏览器 - 特别是输入的值(type =“text”)(我可以保证该值将是双倍的 - 如果我只是替换“with \”

,那么考虑清理数据是否安全

我想更容易看到代码(对不起,PHP)。鉴于不受信任的数据,这是否安全?

$name = str_replace('"', '\\"', $name);
echo '<input type="text" name="name" value="' . $name .'" />';

多字节数据会破坏聚会吗?这取决于页面的字符集吗?我忽略了什么?

TIA!

2 个答案:

答案 0 :(得分:0)

我认为会这样做。

htmlspecialchars是防止XSS攻击的一般解决方案,它似乎只转换<>"&,并且关于参数,',什么也不做。听起来没有任何重要的字符编码黑魔法担心这么简单的任务。

答案 1 :(得分:0)

评论对Matchu的回应(因为我看不到“添加评论”按钮):

对,正常的ASCII输入将完全受到保护,只需在此示例中转义双引号。

然而,$ name中的多字节值怎么样? str_replace不允许你指定变量的字符集(htmlspecialchars),所以它是否容易受到下面很好解释的那种攻击?

http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string

即使该问题讨论了进入数据库的数据,我认为它也可能适用于访问浏览器的数据?