是否有必要将用户提交的数据转义为 HTML 输入值?

Is it necessary to escape user submitted data being put into HTML input value?

假设您从用户输入中获取一个字符串并将其存储到数据库中。稍后您检索该字符串并使用该字符串填充新表单输入的值。如果没有任何清理,是否存在任何 XSS 危险,如果有,对原始输入的破坏最小的最佳方法是什么。

$str = $_POST['string'];
// INSERT $str INTO MYSQL

// LATER
$string = // database fetched string
<input type="text" name="data" value="<?= $string ?>" /> // << XSS vulnerable?

如果 $string 是:

foo"/><script type="javascript">...something malicious...</script>

这是一个 XSS 漏洞。

用常用的XSS防护方法修复:htmlspecialchars()

另见 How to prevent XSS with HTML/PHP?