{
"name": "no name",
"age": 2
}
.json
<script>
标签来绕开 跨站点之间的资源共享的限制规则使用 顶层级 数组的 JSON,which 是合法的 JavaScript 代码
[
{
"user": "aUser"
},
{
"phone": "123-456-7890"
{
]
假如一家銀行用以執行轉帳操作的URL地址如下:
http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那麼,一個惡意攻擊者可以在另一个網站上放置如下代碼:<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">
如果有賬戶名為Alice的用戶訪問了惡意站點,而她之前剛訪問過銀行不久,登錄信息尚未過期,那麼她就會損失1000資金。 這種惡意的網址可以有很多種形式,藏身於網頁中的許多地方。此外,攻擊者也不需要控制放置惡意網址的網站。例如他可以將這種地址藏在論壇,博客等任何用戶生成內容的網站中。這意味著如果伺服器端沒有合適的防禦措施的話,用戶即使訪問熟悉的可信網站也有受攻擊的危險。 透過例子能夠看出,攻擊者並不能通過CSRF攻擊來直接獲取用戶的帳戶控制權,也不能直接竊取用戶的任何信息。他們能做到的,是欺騙用戶瀏覽器,讓其以用戶的名義執行操作。
将敏感信息存储成 JSON 对象 -> 避免使用 顶层级 的数组 JSON
{
"info": [
{
"user": "aUser"
},
{
"phone": "123-456-7890"
}
]
}
仅允许 POST 请求获取数据,禁止使用 GET 请求
<script>
链接到文件eval()
函数将字符串转换成对象,装入内存eval()
对传入的字符串,无差别地编译执行,执行了恶意代码JSON.parse()
来转换 JSON 字符串Access-Control-Allow
属性 Access-Control-Allow-Credentials:true // 定义证书是否可用
Access-Control-Allow-Methods:GET, POST // 哪些 HTTP 方法可用
Access-Control-Allow-Origin:* // 允许哪些域名访问
<script>
不受同源策略影响的特点来向不同站点请求 JSON<script>
不受同源策略的影响,创建 <script>
标签,动态添加,并将函数名称作为参数传送给服务器