處理XMLHttpRequest時如何判斷是否是自己網站發出的?

背景:web form項目,在javascrip的一個公用函數中用一個xmlhttprequest去獲取數據,根據返回的數據改變頁面內容。

問題1:xmlhttprequest向一個handler.aspx頁面發送請求,由此頁面的後台處理請求,在response.write()里返回結果,這樣做合理嗎?如果不合理,用什麼處理請求比較好?

問題2:handler.aspx如何判斷是否是網站中的頁面發送的請求?(因為有些數據要根據用戶許可權提供,頁面已經帶有許可權限制)


問題1: 合理,只要能區分不同的XHR請求即可,好一點的辦法還是用path區分。

問題2: 搜索CSRF,這是一個通用問題,解法很多。


2. 檢查referer和cookie, 最好帶上csrf token. 不要做用GET轉帳之類的事.


web form不是用來給你做api的,應該用 asp. net mvc core的web api

保守點退一步也應該用asp .net mvc的web api。

前端最好換成typescript或者es6用fetch來請求api數據或者jquery ajax比較簡單

實在要用webform的話,用webservice(asmx)來處理前端的http請求

瀏覽器會自動把cookie帶上,直接用session來做身份驗證


生成頁面時,帶上自己隨機的secret token啊,現在一般主流的框架都有跨域攔截的功能了。


判斷IP地址和域名不行嗎


你是在說跨站請求偽造攻擊嗎?像SpringMVC的解決方法是伺服器生成一個隨機數放到頁面表單的隱藏域裡邊,然後每次點提交都會把它發過去,伺服器再一比對就知道是不是偽造的請求了。


突然想到我的網站 mvc框架 不在配置文件專門設置 跨站post不了數據


referer和cookie 實在不行自己寫個token


沒啥用,反正該爬還是爬該模擬你帶啥都沒用。

唯一有點用的就是傳給後端的數據帶上用戶滑鼠運行軌跡數據,後端驗證是否合理。谷歌人機貌似就是這個原理,淘寶防作弊貌似也用了, 其他的只能防君子,想搞隨便搞。


根據題主提供的信息,目前的框架結構,web form,猜測基本就是基於session的許可權驗證,而使用handler.aspx,依然可以在裡面驗證session啊,沒許可權就不返回正確的數據唄!

前面的回答者,估計你們想多了。


你們設計的API都不帶驗證么,是個請求來了就響應?


refer欄位


推薦閱讀:

.net怎麼實現自己的非同步方法?
請各位前輩指導下簡練代碼的思路?
IoC/AOP 這些開發範式為什麼在 .NET 平台上沒有被廣泛採用?
C# 是使用引用計數來發現垃圾對象的嗎?

TAG:Web開發 | JavaScript | NET | ASPNET | C# |