从 <script> link 获取查询字符串的安全风险?
Security risks of getting query string from <script> link?
在中,我问是否可以这样做:
<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 和图像)。
嗯,安全不是我用来指代 javascript 东西的词。所有客户端代码都是可浏览、可编辑、可利用的。只要您的服务器代码假设用户输入可以是 forged/corrupted,您在 javascript 中做什么并不重要。所有的 javascritp 框架都在浏览器中放置了很多逻辑,因此允许用户乱用它,但这并不意味着这些框架不好,而且请求也可以被伪造,所以,简短的回答是......安全漏洞不存在您的客户端,但在您的服务器中。根据定义,您的客户是 "a big hole" 并且来自它的所有内容都必须被视为危险。
你必须问自己的是:"can the user request/push something from/to the server that will produce an unwanted execution"?您可以让客户端用户要求格式化您的硬盘驱动器或检索所有用户的密码。期待那发生。但是...您的服务器允许吗?
在
<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 和图像)。
嗯,安全不是我用来指代 javascript 东西的词。所有客户端代码都是可浏览、可编辑、可利用的。只要您的服务器代码假设用户输入可以是 forged/corrupted,您在 javascript 中做什么并不重要。所有的 javascritp 框架都在浏览器中放置了很多逻辑,因此允许用户乱用它,但这并不意味着这些框架不好,而且请求也可以被伪造,所以,简短的回答是......安全漏洞不存在您的客户端,但在您的服务器中。根据定义,您的客户是 "a big hole" 并且来自它的所有内容都必须被视为危险。
你必须问自己的是:"can the user request/push something from/to the server that will produce an unwanted execution"?您可以让客户端用户要求格式化您的硬盘驱动器或检索所有用户的密码。期待那发生。但是...您的服务器允许吗?