Ajax面試題總結

香吧香發表於2023-04-14

轉載請註明出處:

1.ajax非同步和同步的區別

  Ajax是一種基於JavaScript語言和XMLHttpRequest物件的非同步資料傳輸技術,透過它可以使不用重新整理整個頁面的情況下,對頁面進行部分更新。

  同步和非同步是指客戶端傳送請求時,主執行緒是否會阻塞等待伺服器的響應返回。

  同步請求在傳送請求後,客戶端主執行緒就會被阻塞,等待伺服器響應返回後再繼續執行,期間無法進行其他操作。如果伺服器響應時間長,客戶端就會一直等待,直到伺服器返回資料為止。

  非同步請求則不會阻塞主執行緒,客戶端傳送非同步請求後,繼續執行主執行緒中的其他操作,不會等待伺服器響應。當伺服器接收到非同步請求後,可以立即返回一個響應,客戶端透過回撥函式來處理這個響應,從而實現非同步資料傳輸。

  在Ajax中,使用非同步請求可以提供更好的使用者體驗,因為它不會阻塞使用者的操作,而同步請求會阻塞頁面。但是,非同步請求也有一些缺點,比如伺服器返回的資料可能無序,需要透過回撥函式來處理;另外,非同步請求會增加網路負載。

  同步和非同步請求的區別在於是否阻塞主執行緒,以及請求和響應之間的順序和時間。根據實際情況選擇適合的方式可以提高效能和使用者體驗。

2.ajax會跨域嗎,如何解決的

  會跨域。 在瀏覽器中,使用Ajax進行跨域請求會產生跨域問題。由於瀏覽器的同源策略(Same-Origin Policy)限制,一個網頁的指令碼只能訪問同源(即域名、協議、埠均相同)的資源,不能訪問其他域名下的資源,否則就會產生跨域問題。

  最常用的解決方法:

  • JSONP:利用script標籤的src屬性沒有跨域限制的特性,透過動態插入script標籤實現跨域請求,並透過回撥函式的方式返回資料。

  • CORS:使用CORS(跨域資源共享)實現跨域請求。在服務端設定Access-Control-Allow-Origin響應頭,允許指定的源訪問資源。

  • 代理:在同源的伺服器上設定代理,將客戶端的請求轉發到目標伺服器上,再將目標伺服器的響應返回給客戶端。

3.什麼是跨域

  跨域是指在同一個域名下使用不同埠、協議、子域名等方式訪問資源時,瀏覽器為了安全考慮,會限制頁面中的跨域訪問。例如,http://www.example.com域名下的網頁想要訪問http://api.example.com域名下的資源,就會被瀏覽器限制,這就是跨域問題。

  跨域問題是由於瀏覽器的同源策略導致的。同源策略是瀏覽器的一個安全機制,它要求頁面中的指令碼只能訪問同源的資源,即協議、域名、埠號必須完全一致。同源策略可以保護使用者的隱私和安全,防止惡意指令碼攻擊使用者的資料。 為了解決跨域問題,可以使用JSONP、CORS、代理等方式進行跨域訪問。

4.為什麼要有跨域的設定, 如果沒有跨域請求的校驗會帶來哪些安全方面的問題

  跨域請求的校驗是為了防止惡意請求攻擊的一種安全措施。如果沒有跨域請求的校驗,可能會帶來以下安全方面的問題:

  1. 惡意請求攻擊:由於跨域請求是不受跨域防禦機制保護的,因此惡意網站可以透過偽造跨域請求來獲取敏感資訊,例如使用者憑證、信用卡資訊等。

  2. 拒絕服務攻擊:跨域請求的攻擊者可以透過傳送大量的惡意請求來佔用伺服器資源,導致合法使用者無法正常使用服務。

  3. 資料洩露:如果沒有跨域請求的校驗,敏感資料可能在跨域請求中被竊取,例如使用者憑證等。

  4. 惡意指令碼攻擊:跨域請求可以被惡意指令碼利用,例如透過惡意圖片、影片等資源載入指令碼,從而執行惡意程式碼,導致系統中毒、檔案損壞等問題。

  因此,在實際應用中,必須採取一些措施來確保跨域請求的安全性,例如使用 HTTP Authorization、Cookie、跨域資源共享 (CORS) 等機制來防止惡意攻擊。

4.介紹下csrf與csrf攻擊的流程

  CSRF(Cross Site Request Forgery),中文名稱為跨站請求偽造,是一種常見的Web攻擊方式。攻擊者透過某種方式欺騙使用者在受信任的網站上執行某些操作,從而達到攻擊的目的。CSRF攻擊的流程通常如下:

  1. 使用者登入受信任的網站A,並在該網站上保持登入狀態。

  2. 使用者在未退出網站A的情況下,訪問惡意網站B。

  3. 惡意網站B中嵌入了一個指向網站A的請求,並透過某種方式欺騙使用者讓其點選該請求。

  4. 使用者點選了該請求後,瀏覽器會自動向網站A傳送請求,執行某些操作,例如發帖、轉賬等。

  5. 網站A無法區分這個請求是使用者自己發出的,還是惡意網站B偽造的,從而執行了該請求。 攻擊者可以透過各種方式欺騙使用者點選請求,例如透過電子郵件、社交網路、網路廣告等方式,從而進行CSRF攻擊。為了防止CSRF攻擊,網站可以採取一些措施,例如:

  6. 在表單中新增CSRF令牌,驗證請求是否來自受信任的網站。

  7. 檢查請求頭中的Referer欄位,判斷請求是否來自受信任的網站。

  8. 限制敏感操作的訪問許可權,例如需要使用者進行二次身份驗證。

  9. 及時更新網站的安全補丁,防止被攻擊者利用漏洞進行攻擊。

  10. 提高使用者的安全意識,避免在不受信任的網站上輸入敏感資訊或進行敏感操作。

    簡化後的流程圖如下:

    img

5.偽造跨域請求 是 CSRF攻擊嗎

  偽造跨域請求並不總是 CSRF(Cross-Site Request Forgery) 攻擊。

  CSRF 攻擊是指攻擊者透過偽裝成合法使用者的身份,向目標網站傳送跨域請求,從而獲取目標網站的敏感資訊,例如使用者憑證、信用卡資訊等。偽造跨域請求是 CSRF 攻擊的一種形式,但並不是所有的偽造跨域請求都是 CSRF 攻擊。

  通常情況下,偽造跨域請求是指攻擊者偽造一個與目標網站域名相同的頁面或者請求,使得使用者點選這個偽造頁面或者請求時,使用者的瀏覽器會誤認為是使用者在操作,從而執行攻擊者的惡意程式碼或者獲取使用者敏感資訊。這種攻擊方式也被稱為 XSRF(Cross-Site Request Forgery) 攻擊。

  因此,僅僅因為一個請求是跨域請求,並不能確定這個請求是不是 CSRF 攻擊。要確定一個請求是不是 CSRF 攻擊,需要結合其他因素,例如請求的引數、瀏覽器的日誌等來進行綜合分析。

6.如何防範csrf攻擊

  為了防範CSRF攻擊,我們可以採取以下措施:

  1. 驗證HTTP Referer頭部資訊:檢查請求頭中的Referer欄位,判斷請求是否來自受信任的網站。但是Referer頭部資訊可能會被篡改,因此該方法並不是完全可靠的。

  2. 新增隨機Token:在表單中新增隨機數或Token,並在後臺進行驗證,確保提交請求的來源是合法的。這種方法是目前比較常用的方法,也是較為可靠的。一般來說,Token應該在每次請求時動態生成,同時Token應該有一定的時效性,以避免被攻擊者盜用。

  3. 新增驗證碼:在提交敏感操作的表單時,要求使用者輸入驗證碼,以確保提交請求的來源是合法的。這種方法雖然比較繁瑣,但可以有效地防止CSRF攻擊。

  4. 採用雙重Cookie驗證:在使用者登入時,生成兩個Cookie,一個Cookie儲存使用者身份資訊,另一個Cookie儲存隨機字串,後臺需要驗證這兩個Cookie的有效性。這種方法可以有效地防止CSRF攻擊。

  5. 對敏感操作的請求增加token驗證:為每一次請求新增一個token引數,並在後臺進行驗證,確保提交請求的來源是合法的。 需要注意的是,以上措施並不是絕對可靠的,攻擊者的技術也在不斷提高,因此在實際應用中,我們應該綜合採取以上措施,以提高系統的安全性。

7.web系統的安全應該怎麼考慮

  Web系統的安全是一個非常重要的問題,以下是一些考慮Web系統安全的要點:

  1. 身份認證與授權:Web系統必須對使用者進行身份認證和授權,以確保只有合法使用者才能訪問和作業系統。通常採用的方式包括使用者名稱和密碼、單點登入、OAuth等。

  2. 資料傳輸安全:Web系統必須確保資料在傳輸過程中的安全性,防止敏感資訊被竊取或篡改。可以採用SSL/TLS協議進行資料加密,或者使用加密協議如HTTPS。

  3. 輸入驗證與過濾:Web系統必須對使用者的輸入進行驗證和過濾,以防止SQL隱碼攻擊、跨站點指令碼攻擊(XSS)等攻擊方式。可以採用輸入驗證庫、過濾器等技術。

  4. 訪問控制:Web系統必須對使用者訪問系統的許可權進行控制,確保使用者只能訪問自己有許可權的資源。可以採用RBAC(基於角色的訪問控制)等授權機制。

  5. 安全日誌和監控:Web系統必須記錄使用者的操作日誌和異常日誌,以方便後期分析和追蹤。同時,還需要對系統進行監控和預警,發現安全漏洞和異常情況及時進行處理。

  6. 安全漏洞掃描和修復:Web系統需要定期進行安全漏洞掃描和修復,及時消除系統中可能存在的漏洞和安全隱患,保證系統的安全性。

    Web系統的安全問題需要綜合考慮,採取多種措施來保護系統的安全性。同時,還需要定期進行安全檢查和漏洞修復,及時發現和解決系統中可能存在的安全問題。

相關文章