我是否需要在 html 标签属性中使用 htmlentities() 来防止 XSS 攻击

Do I need to use htmlentities() in html tag attributes to prevent XSS attacks

所以假设我有这段代码:

<div class="name" id="<?php echo $userId; ?>">      
    <p>User Name: <?php echo $username; ?></p>
    <p>Last Activity: <?php echo getTime($datetime); ?></p>
    <p>Date: <?php echo $date; ?></p>
</div>

这个,我是不是也要在divid属性里面写htmlentities

例如,像这样:

<div class="name" id="<?php echo htmlentities($userId); ?>" >...</div>

另外,我需要这样做吗:

<p>Last Activity: <?php echo htmlentities(getTime($datetime)); ?></p>

感谢您的帮助!

P.S.:datetime 是我创建的函数

这取决于用户是否可以操纵这些变量。如果他们可以在他们被回显之前,那么你应该清理这些变量(也使用 htmlentities() 和其他变量)。如果这些变量是硬编码的,所以用户无法操纵它们,那么你就没事了。

基本上,用户可以在调用 echo $userID 之前以任何方式更改变量 $userID 吗?然后,是的,出于安全目的,您应该包括 htmlentites 和其他一些东西。

这里有一个 link 可能会有帮助。一定要阅读评论以获得答案。