【发布时间】:2016-10-26 13:13:06
【问题描述】:
在another question,我问是否可以这样做:
<script type = "text/javascript" src = "/js/myScipt.js?v=3"></script>
然后使用 jQuery 或 JavaScript 在 myScipt.js 中获取 v 的值。显然,是的,可以这样做:
var getV = document.currentScript.src.split("?v=")[1]; // JS
var getV = $('script').last().attr("src").split("?v=")[1]; // jQuery
我的新问题 - 我是否会制造任何可以通过这样做来利用的安全风险?如果是这样,有没有办法清理 queryString 的值以消除风险?
如果重要的话,myScript.js 使用 jQuery 将它基于某些条件构造的 HTML(一些 div 和图像)插入到页面中。
【问题讨论】:
-
脚本标签是你的代码还是第三方的东西放在了dom中?
-
脚本标签是我自己放在DOM中的,就在body结束标签之前。这是我自己的脚本,不使用 AJAX 或以其他方式与服务器进行任何交互。
-
现在您在变量中有一个用户提交的字符串。本身没有安全问题。重要的是你继续对那个变量做些什么。如果您使用
eval()将其作为 JavaScript 执行,那么显然您遇到了跨站点脚本问题。如果您将其写入 HTML 标记(例如使用innerHTML、$el.html()或document.write()),那么您就会遇到 HTML 注入问题,也会导致跨站点脚本。如果您使用 DOM 文本和属性属性安全地构建 HTML,那么您就可以了。 -
@bobince - 谢谢你的回答。我认为我可以安全地构建 HTML。
标签: javascript jquery security hyperlink query-string