在输入 html 内引用(使用 PHP)
Quote inside input html (using PHP)
我有这样的东西(代码简化):
<?php
$var = 'Read "The Book"';
?>
<input type="text" value="<?php echo $var; ?>" />
问题是,如果它打印 read
,输入看起来像,当您查看源代码时,您会看到它有 <input type="text" value="Read "The Book"" />
,但它不起作用。
我不能简单地将 value="<?php echo $var; ?>"
替换为 value='<?php echo $var; ?>'
因为 $var
可以有任何值,如果我这样做并且它的值是 D'Artagnan
它是将尝试打印 <input type="text" value='D'Artagnan' />
。
=(
有什么建议吗?
您应该通过将具有特殊含义的字符转义到它们各自的 HTML 实体中来清理所有输出。您可以在 html 上下文中使用 htmlspecialchars
.
执行此操作
<input type="text" value="<?php echo htmlspecialchars($var); ?>" />
因此,有了它,您就可以避免 XSS 攻击。
我有这样的东西(代码简化):
<?php
$var = 'Read "The Book"';
?>
<input type="text" value="<?php echo $var; ?>" />
问题是,如果它打印 read
,输入看起来像,当您查看源代码时,您会看到它有 <input type="text" value="Read "The Book"" />
,但它不起作用。
我不能简单地将 value="<?php echo $var; ?>"
替换为 value='<?php echo $var; ?>'
因为 $var
可以有任何值,如果我这样做并且它的值是 D'Artagnan
它是将尝试打印 <input type="text" value='D'Artagnan' />
。
=(
有什么建议吗?
您应该通过将具有特殊含义的字符转义到它们各自的 HTML 实体中来清理所有输出。您可以在 html 上下文中使用 htmlspecialchars
.
<input type="text" value="<?php echo htmlspecialchars($var); ?>" />
因此,有了它,您就可以避免 XSS 攻击。