为什么决定使用XMLHTTPRequest进行XML调用不应该跨域边界调用?您可以检索JavaScript,图片,CSS,iframe以及我能从其他域中想到的任何其他内容.为什么不允许Ajax HTTP请求跨越域边界?考虑到我可以看到它被滥用的唯一方式,这似乎是一个奇怪的限制,如果有人将Javascript注入页面.但是,在这种情况下,您只需向文档中添加img,script或iframe元素,即可让它请求第三方URL并将其发送到服务器.
[编辑]
一些答案指出了以下原因,让我们指出他们没有创造禁止这一点的主要原因的原因.
你可以在不使用它的情况下进行XSRF攻击.作为一般规则,XMLHTTPRequest根本不被使用,仅仅是因为以与所有主流浏览器兼容的方式制作XMLHTTPRequest非常困难.如果您希望它们加载您的URL,则可以更轻松地向网址添加img标记.
<script type="text/javascript">
$.post("http://some-bank.com/transfer-money.php",
{ amount: "10000", to_account: "xxxx" })
</script>
Run Code Online (Sandbox Code Playgroud)
可以完成
<body onload="document.getElementById('InvisbleForm').submit()"
<div style="display:none">
<form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">
<input type="hidden" name="amount" value="10000">
<input type="hidden" name="to_account" value="xxxxx">
</form>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
你不会再造成任何不安全感.您只是想要以良好的方式使用它的开发人员感到不安.任何想要将此功能用于邪恶(也称为真棒)的人都可以使用其他方法来实现它.
我将bobince的答案标记为正确,因为他指出了关键问题.因为XMLHTTPRequest允许您使用凭据(cookie)发布到目标站点,并读取从站点发回的数据,以及发送人员凭据,您可以编排一些提交一系列表单的JavaScript,包括确认表单,完成生成的任何随机密钥,以防止XSRF.通过这种方式,您可以浏览目标网站,如银行,银行的网络服务器将无法确定是否只是提交所有这些表单的普通用户.
我已经提到了这篇SO帖子.我一直在使用AlternateView for PNG文件嵌入图像.现在我想知道如何用PDF来做.
它应该对LinkedResource有用吗:
Dim document As New LinkedResource(pdfFilePath, "image/pdf")
Run Code Online (Sandbox Code Playgroud)
我只是想弄清楚如何使用图像来嵌入PDF,或者这是不可能的,我将不得不将其作为附件?
我修改了我为俄罗斯市场制作的一个应用程序.一切似乎都很好,当您将数据输入数据库时出现问题但是通过将页面编码设置为utf-8来解决问题.因此插入和检索工作正常.我遇到问题我只是不知道如何解决.当我在mssql查询分析器中运行以下查询(简化)时(因此没有机会在代码中搞砸了),即使有很多记录匹配,我也没有得到任何结果:( mysql的版本是2005)
SELECT *
FROM institutions
WHERE city LIKE '%??????%'
ORDER BY address1
Run Code Online (Sandbox Code Playgroud)
即使我将其修改为:
SELECT *
FROM institutions
WHERE city='??????'
ORDER BY address1
Run Code Online (Sandbox Code Playgroud)
或其他一些变化,它只是不起作用.问题是为什么?
PS如果在我提交之后你看不到西里尔字母,它会搜索莫斯科作为一个城市.
任何人都有解决方案或想法该做什么?
有人提出了类似的问题,但似乎没有一个问题可以解决我的确切情况,这就是我要做的事情.
我有一个管理学生信息的用户控件.即FirstName,LastName,Address等.
我有一个网页/表单,上面有一个按钮."添加学生".我想要完成的是每次点击后将新的StudentInfo控件添加到webform.
我当前的代码看起来像这样
Private Sub btnAddStudent_Click(sender as object, ByVal e As System.EventArgs)
Dim lStudentInfo as Control
LoadControl("~/StudentInfo.ascx")
Me.placeholder1.controls.add(lStudentInfo)
End Sub
Run Code Online (Sandbox Code Playgroud)
使用此代码,仅添加一个StudentInfo控件,再次按下"添加"按钮时,不会在第一个控件下方添加新的StudentInfo控件,并清除在第一个控件中输入的文本/数据.
在此先感谢您的任何帮助.
我正在git上弄湿我的脚并遇到以下问题:
我的项目源码树:
/
|
+--src/
+----refs/
+----...
|
+--vendor/
+----...
Run Code Online (Sandbox Code Playgroud)
我在我的供应商分支中有代码(目前是MEF),我将在那里编译,然后将引用移动到/src/refs项目从中获取的位置.
我的问题是我有我的.gitignore设置忽略*.dll和*.pdb.我可以做一个git add -f bar.dll强制添加被忽略的文件,这是好的,问题是我无法弄清楚列出哪些文件被忽略.
我想列出被忽略的文件,以确保我不会忘记添加它们.
我已经阅读了手册页git ls-files,但无法使其正常工作.在我看来,git ls-files --exclude-standard -i应该做我想要的.我错过了什么?
在.net 3.5符号的一些研究中,我发现了一个预处理器指令
#if WIN95_SUPPORT
//...
#endif
Run Code Online (Sandbox Code Playgroud)
这对我来说真的很奇怪!它位于System.Windows.Forms.Control的Control.cs中的第13861行,方法为void WndProc(ref Message m)!
你们中有谁对此有所了解吗?
在Objective-C中,声明变量id与声明变量之间的区别是什么NSObject *?
如何统计我的体长在0到25个字符之间的消息数量?
Message.countBy('from Message m where m.body.length <= 25')
Run Code Online (Sandbox Code Playgroud)
对我来说不幸的是,countBy不采用字符串参数.
目标代码,机器代码和汇编代码之间有什么区别?
你能举出他们差异的视觉例子吗?