javascript - XSS:这如何安全?

标签 javascript php html security xss

我有以下代码:

echo "<span title='{$_GET["t"]}'>Foo</span>";

显然,这段代码不是XSS-Save,但是当我调用以下URL时,没有执行JavaScript:

  1. url?t=Foo" onclick="alert(1)"
  2. url?t=<script>alert(1);</script>

浏览器在这里做了一些神奇的工作吗?是否存在任何攻击向量?

最佳答案

为什么会这样呢?您将生成以下内容:

  1. <span title='Foo" onclick="alert(1)"'>Foo</span>
  2. <span title='<script>alert(1)</script>'>Foo</span>

两者都不是有效的 html/javascript。第一个的引号不匹配,因此标签已损坏。第二个没有javascript。它有一个标题属性,其中包含字符 < , s , c等等...那不是javascript。这只是一些看起来像 JavaScript 的文本。

要执行 XSS,无论您注入(inject)什么,必须 才能生成有效的代码,否则无论您注入(inject)什么环境,它都只是一个语法错误。

一个有效的例子是:

http://example.com/script.php?t='><script>alert('1');</script><span+title='

这会生成

<span title=''><script>alert('1');</script><span title=''>Foo</span>
xxxxxxxxxxxxx0000000000000000000000000000000000000000000xxxxxxxxxxxx

哪里x代表原始文档,0代表你注入(inject)的内容。

关于javascript - XSS:这如何安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499702/

相关文章:

php - 如何计算和显示链接的点击次数

php - 提取英国邮政编码首字母的正则表达式

javascript - 为什么当我缩小窗口时彩色背景没有完全覆盖我的页面?

javascript - 如何使用 IE 和 FF 一致地让 jQuery 以编程方式访问此选择列表中的项目?

JavaScript:谷歌地图mapOptions?

javascript - 将 html 标签附加到现有文本的最佳方法是什么?

php - Docker:docker-compose 将文件从容器复制到主机

html - 如何根据窗口高度制作垂直响应元素?

css - 让文本正确格式化而不是换行在 div 列中

javascript - 由于滚动,响应表内的 Bootstrap 按钮下拉菜单不可见