我有一个使用URL参数设置变量并在页面内显示的PHP网页。
URL:webaddress.com/page.php?id=someCity
我们采用 $_GET['id'] 并将其分配为变量 ($city),然后在页面上以某种动态方法重构静态文本。
例如:
欢迎来到我们关于Somecity的页面。我们可以帮助您找到与someCity相关的产品,因为我们在Somecity有着丰富的经验。显然,这可以使用
我的客户被告知他存在跨站脚本(XSS)漏洞。我的研究表明,然后可以使用 iFrame 来窃取 cookie 并执行恶意操作。推荐的解决方案是使用 PHP 函数 htmlspecialchars() 将字符更改为“HTML 实体”。我不明白这比使用 strip_tags() 删除所有标签更安全。
因此,我同时使用两者以及字符串替换和大写字母,因为这也是必需的。
我们采用 $_GET['id'] 并将其分配为变量 ($city),然后在页面上以某种动态方法重构静态文本。
例如:
欢迎来到我们关于Somecity的页面。我们可以帮助您找到与someCity相关的产品,因为我们在Somecity有着丰富的经验。显然,这可以使用
<?php echo $city; ?>
来实现。我的客户被告知他存在跨站脚本(XSS)漏洞。我的研究表明,然后可以使用 iFrame 来窃取 cookie 并执行恶意操作。推荐的解决方案是使用 PHP 函数 htmlspecialchars() 将字符更改为“HTML 实体”。我不明白这比使用 strip_tags() 删除所有标签更安全。
因此,我同时使用两者以及字符串替换和大写字母,因为这也是必需的。
$step1 = str_replace('_', ' ', $_GET['id']); // Remove underline replace with space
$step2 = strip_tags($step1); // Strip tags
$step3 = htmlspecialchars($step2); // Change tag characters to HTML entities
$city = ucwords($step3);
问题: 这样做足以防止XSS攻击吗?htmlspecialchars()比strip_tags()更有优势吗? 我理解了类似问题的其他提交中的区别,但想知道每个函数(特别是htmlspecialchars())如何防止XSS攻击。