iT邦幫忙

1

JS-前端的ajax操作是否被限制? 能否對空執行事件?

  • 分享至 

  • xImage

我知道JS的ajax操作可以把別的網站上的東西列印出來
那如果我想要用js去進行
超出原網頁(使用者當下頁面)的操作 是可能的嗎?

實際例子像是
it幫可以對使用者追蹤 如果我想要用JS來完成這個動作
藉由ajax 到了user的頁面 dom選取追蹤按鈕 進行click
完成了藉由JS追蹤 而不用轉到使用者的頁面

實際測試發現會有400的post錯誤
以我的理解 明明都是https://ithelp.ithome.com.tw/
不知道為何有這樣的錯誤? 又是否能夠解決?

Js要進行這樣的操作是否可能呢?
還是這就是前端的極限了

以上 謝謝各位前輩

看更多先前的討論...收起先前的討論...
應該會有CORS的問題吧,跨網域請求基本上是不允許的,所以用ajax去呼叫別人的網頁都會被擋下來才對
bodera iT邦新手 4 級 ‧ 2022-12-28 20:59:32 檢舉
版主都說了是同一個Domain,所以不會有CORS問題。
400的post錯誤訊息是什麼? 會無法直接複製url重現post的理由可以有很多種,
像是用JWT Token來做身分驗證的話你沒有在Header帶Token當然也會被擋下來。
IT邦的js有做minify,去把它reverse後研究一下應該不是問題
bodera iT邦新手 4 級 ‧ 2022-12-28 21:03:07 檢舉
JS博大精深,永遠在我以為我悟了的時候狠狠的打我臉。而且JS也不局限於前端,只會JS想要架伺服器也可以參考看看Node.js,這條不歸路永無止境,一起加油吧!
所以如果要自開api讓ajax或手機app呼叫使用的話,還是要加一些token甚至是動態產生的方式,規避被濫用的問題,想要知道你的網站ajax幹了什麼事POST什麼key/value拿到什麼資料,F12看Network Fetch XHR就行
froce iT邦大師 1 級 ‧ 2022-12-29 08:29:11 檢舉
這基本上不是js專屬的範疇了,請用現代化框架去實作一個正常的網站,並認真的去看網站資安相關基礎知識如CSFR、auth機制、HTTP header,或認真的去學爬蟲。

其實你前一個問題我就回答了,你要問的都是爬蟲相關的東西。
要學爬蟲最簡單的就是認真的去累積寫網站全端的經驗。

回到正題,你要在某個網頁發起一個本來在這網頁上沒有個請求,當然可以,但這會涉及到一個問題,這是否觸犯了跨站請求偽造(雖然你沒有跨站啦)。
https://zh.wikipedia.org/zh-tw/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
一般來說,一些機敏欄位會用POST送出,為了避免跨站請求偽造的問題,會在產生表單的同時,附帶的產生一組隨機碼(CSRF token),在送出表單的時候必須附帶這組隨機碼,後端會驗證。

你在其他頁面用ajax去打,獲取不到這組隨機碼,當然不能得到結果。
@froce 謝謝你的分享 跨站請求我知道 不用貼給我(我是有做功課的)
我的問題就是 明明我沒有跨站啊?
所以不好意思 我覺得您沒回答到我的問題喔 謝謝

還是您的意思是 我沒有跨站但還是觸碰到跨站偽造的問題嗎?
@bodera 謝謝你 很有趣的分享 一起加油
使用network去看的話會發現是這條js
xhr.send( ( options.hasContent && options.data ) || null );
@japhenchen 前輩真的很專業
又學到了 非常感謝你的分享 很專業的說明
archer9080 iT邦研究生 4 級 ‧ 2022-12-29 15:27:42 檢舉
有可能是只看到了你第一句話且沒完全理解你的操作流程

既然你知道csrf就也應該要知道後端驗證這事情的必要性,同網域/開放特定網域僅是這方面的最低要求

同時還可能有樓上前輩說的token、請求次數等等驗證

>>想要用js去進行超出原網頁(使用者當下頁面)的操作 是可能的嗎?

只能解析並依靠反覆測試,看哪個辦法能夠繞過/通過後端所設立的驗證,進而達到你的需求
@archer9080 對 很多人不看文章就想"解答"@@
導致我需要一直重複我已經打過的內文問題
謝謝您有看完

前輩給我的解釋 非常清楚 很有幫助
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
akajoke
iT邦新手 5 級 ‧ 2023-01-05 15:29:39
最佳解答

可以試著找找套件的方向

不一定能解決 但至少有幫助

我要發表回答

立即登入回答