在输入 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 攻击。