为什么跨站点脚本称为跨站点脚本?该术语对我(非英语母语人士)暗示,还有其他一些网站会攻击您的网站,但大多数情况下并非如此,是吗?(见鬼,它甚至不总是包括脚本(向用户提供 JavaScript)。伪造的 HTML 界面通常也是一种可行的执行策略。)
据我了解,我们所说的 XSS 是由于用户输入转义不足引起的,主要发生在 Web 应用程序中,如this question所示。例如,以下代码段易受攻击:
<?php
echo $_GET['q'];
?>
但以下修复它[1]:
<?php
echo htmlspecialchars($_GET['q']);
?>
用户输入也可以存储在数据库中,如果输入在返回显示时没有转义,也会发生同样的事情。事实上,这似乎是对攻击者最有利的攻击方法(影响最多的用户),因此也是最常用的。
我觉得这个术语的模糊性会导致黑客工作,例如从用户输入中删除有问题的字符或字符串以及其他混乱(显然允许数据库中的有效 JavaScript 是错误的),当没有经验的人试图修补它时。
代替深奥的 XSS 术语,类似缺乏转义工作的东西不是也一样,而且更清晰吗?还是 XSS 一词包含的内容更多?
[1]:当然,假设我们在一个 HTML 页面的中间。