處理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# |