可能是一个天真的问题,但我想知道我是否有数据将被发送到浏览器 - 特别是输入的值(type =“text”)(我可以保证该值将是双倍的 - 如果我只是替换“with \”
,那么考虑清理数据是否安全我想更容易看到代码(对不起,PHP)。鉴于不受信任的数据,这是否安全?
$name = str_replace('"', '\\"', $name);
echo '<input type="text" name="name" value="' . $name .'" />';
多字节数据会破坏聚会吗?这取决于页面的字符集吗?我忽略了什么?
TIA!
答案 0 :(得分:0)
我认为会这样做。
htmlspecialchars是防止XSS攻击的一般解决方案,它似乎只转换<
,>
,"
,&
,并且关于参数,'
,什么也不做。听起来没有任何重要的字符编码黑魔法担心这么简单的任务。
答案 1 :(得分:0)
评论对Matchu的回应(因为我看不到“添加评论”按钮):
对,正常的ASCII输入将完全受到保护,只需在此示例中转义双引号。
然而,$ name中的多字节值怎么样? str_replace不允许你指定变量的字符集(htmlspecialchars),所以它是否容易受到下面很好解释的那种攻击?
http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
即使该问题讨论了进入数据库的数据,我认为它也可能适用于访问浏览器的数据?