1

当我们对我们的项目进行安全审计时,我们发现了 Link "/a" 漏洞。

在整个项目中搜索链接后,我们在项目中使用的 JQuery-1.9.js java-script 文件中找到了链接。

该 JQuery-1.9.js 中的一小部分代码 -

// Make sure that URLs aren't manipulated
// (IE normalizes it by default)
hrefNormalized: a.getAttribute("href") === "/a",

据我了解,此代码部分有助于使其(JQuery)与 IE 6/7/8 兼容。hrefNormalized 用于检查锚标记是否将 href 值提供为完整 URL 或精确 href ,这在 IE 版本中存在问题。这部分的更好解释在 https://www.inkling.com/read/jquery-cookbook-cody-lindley-1st/chapter-4/recipe-4-1

我想删除这个漏洞,但我不想删除或更改 JQuery js 文件中的代码。

所以,我的问题是为什么 JQuery 设计者不使用“/#”而不是“/a”。在该代码中使用“/#”有什么问题。

之前有人向 JQuery Team 提出了同样的问题,但他们告诉这不是 Jquery 的问题。有关该票的参考 http://bugs.jquery.com/ticket/10149

帮我解决还是有其他解决方案?

谢谢

4

2 回答 2

3

这不是漏洞,而是误报。安全扫描程序将“/a”字符串解释为链接,但事实并非如此。

即使 jQuery 在 DOM 中创建了链接,用户也无法点击或看到它。您的网站实际上在任何地方都没有指向 /a 的真正链接。

我会忽略这个问题而不做任何改变。

于 2014-07-08T09:59:09.983 回答
0

也许,如果你想把它hrefNormalized: a.getAttribute("href") === "/a",转换成这个hrefNormalized: a.getAttribute("href") === "/#",,但你不想接触 jQuery 文件。将第二个脚本按顺序放入脚本中,以便浏览器在读取 jQuery 文件后读取您的脚本,从而将其混搭。

无论如何,我以前从未遇到过 jQuery 的问题,请先检查您的代码。

如果你不想让你的视图带有脚本,把它放在一个 js 文件中,并在 jQuery 文件之后将该文件链接到你的视图。

希望它对您有所帮助,或者至少给了您一些解决问题的想法。祝你好运,让我们知道进展如何!;)

编辑:

<script src="~/JQuery/jquery-2.0.3.js"></script>
   <script src="~/Scripts/Fix.js"></script>

如果你这样做,浏览器首先读取 jQuery,然后读取 Fix.js。在 Fix.js 中,您将要从 jQuery 更改的函数或参数放入其中。

因此,如果它们相等,浏览器将获得它读取的最新版本。

例如:

function whatever (){   //This in jQuery file
  //things #1
}

function whatever (){   //This in Fix file
  //Different things #2
}

这样浏览器会选择 Fix.js 一个,因为这是他最后一次阅读。

于 2014-07-08T09:47:14.103 回答