为什么我们应该注意Javascript中的代码注入
Why should we be aware of Code Injection in Javascript?
我只是在研究为什么使用eval()
函数不好,我发现了一个容易受到代码注入攻击的原因(文章:为什么使用JavaScript eval函数是个坏主意?)。
但我的问题是,我们一定需要担心javascript中的代码注入吗?因为,如果任何用户想为网站运行任何JS脚本,他可以在控制台中运行。
所以,我只是想知道,如果有人成功地在我的javascript代码中注入了他的代码,这可能会造成什么额外的伤害?
编辑
根据Olander下面的回答,我发现了一种漏洞,当我们通过AJAX调用在浏览器和服务器之间进行通信时。这很有道理。但我可能有Javascript程序,这些程序只在浏览器中运行,与后端没有任何通信,例如计算器或简单游戏。因此,我在这里的补充问题是,是否还有其他原因会使这些项目变得脆弱?
当黑客向用户发出的JSON请求中注入有害代码,然后使用eval
进行评估时,会出现安全问题。
假设以下代码正在运行
$.get("/get.json", function(data){
var obj = eval(data) // String to javascript object
});
资源看起来像这个
GET /get.json
{
some: "data"
}
但是攻击者使用中间人攻击来代替上述攻击
function(){
// send window.cookie to attacker
}();
攻击者现在可以访问用户会话。
如果您的代码从查询字符串中获取一个值并在评估中使用它,攻击者可能会诱使受害者访问包含邪恶查询字符串的URL。
来自OWASP:
<script>
function loadObj(){
var cc=eval('('+aMess+')');
document.getElementById('mess').textContent=cc.message;
}
if(window.location.hash.indexOf('message')==-1)
var aMess="({'"message'":'"Hello User!'"})";
else
var aMess=location.hash.substr(window.location.hash.indexOf('message=')+8);
</script>
攻击者可以发送包含链接的电子邮件,或者将访问其恶意网站的用户重定向到URL
http://example.com/page.html?message=<img onerror="alert(xss)">
然后你就有了一个基于DOM的XSS攻击。
如果你的游戏没有后端,而网站上有其他敏感信息,如用户会话,那么攻击者可能会窃取会话cookie或获取凭据。这完全取决于JavaScript可以访问什么。也就是说,它将完全访问其托管域,因为同源政策将限制它访问。然而,如果您在这里有其他敏感应用程序,那么它们可能会被泄露。如果没有,那么在最坏的情况下,攻击者可能会通过更改内容或监视用户在您的网站上的行为来滥用用户对您网站的信任。
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何使用python在URL中捕获javascript代码注入
- 恶意软件将代码注入我的Dojo/WebSocket应用程序:如何防止
- 浏览器扩展:如何在没有冲突的情况下将javascript代码注入页面
- 服务器端 JavaScript 代码注入攻击
- 将代码注入 iFrame 以隐藏特定元素
- 我可以将 JavaScript 代码注入图像吗?
- Tumblr将新代码注入我的链接中
- 将 JS 代码注入文本区域
- 我可以将Javascript代码注入Chrome自定义选项卡吗
- 包括远程JS文件通过直接代码注入与润滑器
- 为什么我们应该注意Javascript中的代码注入
- 远程javascript html代码注入
- 如何将使用php变量的javascript代码注入php页面
- Parallax脚本(通过代码注入注入Enjin)Can't单击按钮
- 在加载时将代码注入iframe
- 有没有什么方法可以让用户上传的SVG图像免受代码注入等的影响
- 识别是否发生了代码注入(JollyWallet等)
- 有没有办法将自己的代码注入Firefox的QTP'
- 包含外部CSS文件是安全的,还是会导致代码注入?