我有一个具有登录页面的Web应用程序。
在源代码中(特别是在<head>
中),我可以看到所使用的第三方javascript库以及该库的路径,有时还包括该库的版本。
我甚至无需身份验证就可以访问这些库的代码。
那是安全隐患吗?
例如:
<script type="text/javascript" src="/****/js/ui/js/jquery-ui-1.2.2.custom.min.js"></script>
<script type="text/javascript" src="/*****/dwr/interface/AjaxService.js"></script>
如果是,该如何缓解?
答案 0 :(得分:1)
是的,您需要缓解两种威胁:
希望这可以帮助您:)
答案 1 :(得分:0)
是的,这种方式存在一些问题。
攻击者可以利用lib服务器并为您提供经过修改的lib代码。
首先,我建议您下载一个库(或者更好的方法是通过package.json
将其添加到捆绑包中),并包含服务器(而非第三方)中的所有库。
每次下载时,您都可以检查lib的控制总和,以确保未对其进行修改。
这可以使您免于某些问题,但攻击者也可以更改您的地址。
(当用户解析您的地址时,他可以将用户重定向到他的主机,而不是您的主机)。
因此,最好将HTML + js放在一个没有交叉链接的文件中,这样会更安全。
这可以通过webpack捆绑来实现。
因此,攻击者只能破坏整个应用程序,而不是1个lib,这可能会更困难。
编辑
(但是,只有1个文件的选项仅对小型项目有用。对于较大的项目,您应该使用链接来提高性能,并且风险更大)。
您可以使用snyk(它是漏洞的开源数据库)检查(在服务器上或package.json中的)代码。
编辑
另一种保护方式是使用CSP标头。它们允许仅使用特定的来源列表来下载某种格式的内容(样式,脚本或图像等)。它可以防止某些类型的XSS。强烈建议始终使用所有类型的CSP标头。但是风险仍然存在:可信任的来源可能会受到损害,甚至DNS也可能遭到破坏。