Web applications “好吧,只是逃避一下”;用于HTML文本输入值的数据上的(双引号)? 可能是一个幼稚的问题,但我想知道我是否有数据将被发送到浏览器-特别是在一个输入的值(类型=“文本”)(我可以保证这个值将被双引号),如果我只替换“用\”/p>就可以安全地考虑数据是否安全?

Web applications “好吧,只是逃避一下”;用于HTML文本输入值的数据上的(双引号)? 可能是一个幼稚的问题,但我想知道我是否有数据将被发送到浏览器-特别是在一个输入的值(类型=“文本”)(我可以保证这个值将被双引号),如果我只替换“用\”/p>就可以安全地考虑数据是否安全?,web-applications,Web Applications,我想更容易看到代码(对不起,PHP)。如果数据不可信,这是否安全 $name = str_replace('"', '\\"', $name); echo '<input type="text" name="name" value="' . $name .'" />'; $name=str\u replace(“,“\\”,$name); 回声'; 多字节数据会毁掉聚会吗?这取决于页面的字符集吗?有什么我忽略的吗 蒂亚 我想那就行了 是防止XSS攻击的通用解决方案,它似乎只转换,

我想更容易看到代码(对不起,PHP)。如果数据不可信,这是否安全

$name = str_replace('"', '\\"', $name);
echo '<input type="text" name="name" value="' . $name .'" />';
$name=str\u replace(“,“\\”,$name);
回声';
多字节数据会毁掉聚会吗?这取决于页面的字符集吗?有什么我忽略的吗


蒂亚

我想那就行了


是防止XSS攻击的通用解决方案,它似乎只转换
&
,并且,根据参数,
,而不做任何其他事情。听起来,对于这样一个简单的任务,似乎没有任何重要的字符编码黑魔法需要担心。

回复Matchu(因为我根本看不到“添加评论”按钮):

对,在本例中,通过仅转义双引号,可以完全保护正常ASCII输入

但是,$name?str_replace中的多字节值不允许您指定变量的字符集(htmlspecialchars允许),因此它是否容易受到下面解释的攻击

尽管这个问题讨论的是进入数据库的数据,但我认为它也可能适用于进入浏览器的数据