**1.session 和 cookie 有什么區別?**
- 存儲位置不同:session 存儲在服務器端;cookie 存儲在瀏覽器端。
- 安全性不同:cookie 安全性一般,在瀏覽器存儲,可以被偽造和修改。
- 容量和個數限制:cookie 有容量限制,每個站點下的 cookie 也有個數限制。
- 存儲的多樣性:session 可以存儲在 Redis 中、數據庫中、應用程序中;而 cookie 只能存儲在瀏覽器中。
*****
**2. 說一下 session 的工作原理?**
session 的工作原理是客戶端登錄完成之后,服務器會創建對應的 session,session 創建完之后,會把 session 的 id 發送給客戶端,客戶端再存儲到瀏覽器中。這樣客戶端每次訪問服務器時,都會帶著 sessionid,服務器拿到 sessionid 之后,在內存找到與之對應的 session 這樣就可以正常工作了。
*****
**3. 如果客戶端禁止 cookie ,session 還能用嗎?**
可以用,session 只是依賴 cookie 存儲 sessionid,如果 cookie 被禁用了,可以使用 url 中添加 sessionid 的方式保證 session 能正常使用。
*****
**4. 如何避免 SQL 注入?**
- 使用預處理 PreparedStatement。
- 使用正則表達式過濾掉字符中的特殊字符。
*****
**5. 什么是 XSS 攻擊,如何避免?**
XSS 攻擊:即跨站腳本攻擊,它是 Web 程序中常見的漏洞。原理是攻擊者往 Web 頁面里插入惡意的腳本代碼(css 代碼、Javascript 代碼等),當用戶瀏覽該頁面時,嵌入其中的腳本代碼會被執行,從而達到惡意攻擊用戶的目的,如盜取用戶 cookie、破壞頁面結構、重定向到其他網站等。
預防 XSS 的核心是必須對輸入的數據做過濾處理。
*****
**6. 什么是 CSRF 攻擊,如何避免?**
CSRF:Cross-Site Request Forgery(中文:跨站請求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發送惡意請求,比如:以你名義發送郵件、發消息、購買商品,虛擬貨幣轉賬等。
防御手段:
- 驗證請求來源地址;
- 關鍵操作添加驗證碼;
- 在請求地址添加 token 并驗證。