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

时间:2017-06-15 03:38:08

标签: php html xss

假设我有这段代码:

<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>

在此,我是否还必须在div id属性中编写htmlentities

例如,像这样:

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

另外,我是否需要这样做:

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

感谢您的帮助!

P.S.:datetime是我创建的一个功能

1 个答案:

答案 0 :(得分:1)

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

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

这是link可能会有所帮助。请务必阅读答案的评论。