1.什么是 SQL 注入攻擊?
攻擊者在 HTTP 請求中注入惡意的 SQL 代碼,服務器使用參數構建數據庫 SQL 命令時,惡意SQL 被一起構造,并在數據庫中執行。
用戶登錄,輸入用戶名 lianggzone,密碼 ‘ or ‘1’=’1 ,如果此時使用參數構造的方式,就會出現select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’
不管用戶名和密碼是什么內容,使查詢出來的用戶列表不為空。
2.如何防范 SQL 注入攻擊使用?
預編譯的 PrepareStatement 是必須的,但是一般我們會從兩個方面同時入手。
Web 端
1)有效性檢驗。
2)限制字符串輸入的長度。
服務端
1)不用拼接 SQL 字符串。
2)使用預編譯的 PrepareStatement。
3)有效性檢驗。(為什么服務端還要做有效性檢驗?第一準則,外部都是不可信的,防止攻擊者繞過 Web 端請求)
4)過濾 SQL 需要的參數中的特殊字符。比如單引號、雙引號。
3.什么是 XSS 攻擊?
跨站點腳本攻擊,指攻擊者通過篡改網頁,嵌入惡意腳本程序,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。
4.如何防范 XSS 攻擊?
1)前端,服務端,同時需要字符串輸入的長度限制。
2)前端,服務端,同時需要對 HTML 轉義處理。將其中的”<”,”>”等特殊字符進行轉義編碼。防 XSS 的核心是必須對輸入的數據做過濾處理。
5.什么是 CSRF 攻擊?
跨站點請求偽造,指攻擊者通過跨站請求,以合法的用戶的身份進行非法操作。可以這么理解 CSRF 攻擊:攻擊者盜用你的身份,以你的名義向第三方網站發送惡意請求。CRSF 能做的事情包括利用你的身份發郵件,發短信,進行交易轉賬,甚至盜取賬號信息。
6.如何防范 CSRF 攻擊安全框架?
例如 Spring Security, token 機制。在 HTTP 請求中進行 token 驗證,如果請求中沒有 token 或者 token 內容不正確,則認為 CSRF 攻擊而拒絕該請求。
驗證碼。通常情況下,驗證碼能夠很好的遏制 CSRF 攻擊,但是很多情況下,出于用戶體驗考慮,驗證碼只能作為一種輔助手段,而不是最主要的解決方案。
referer 識別。在 HTTP Header 中有一個字段 Referer,它記錄了 HTTP 請求的來源地址。如果Referer 是其他網站,就有可能是 CSRF 攻擊,則拒絕該請求。但是,服務器并非都能取到Referer。很多用戶出于隱私保護的考慮,限制了 Referer 的發送。在某些情況下,瀏覽器也不會發送 Referer,例如 HTTPS 跳轉到 HTTP。
1)驗證請求來源地址;
2)關鍵操作添加驗證碼;
3)在請求地址添加 token 并驗證。
7.什么是文件上傳漏洞?
文件上傳漏洞,指的是用戶上傳一個可執行的腳本文件,并通過此腳本文件獲得了執行服務端命令的能力。
許多第三方框架、服務,都曾經被爆出文件上傳漏洞,比如很早之前的 Struts2,以及富文本編輯器等等,可被攻擊者上傳惡意代碼,有可能服務端就被人黑了。如何防范文件上傳漏。文件上傳的目錄設置為不可執行。
1)判斷文件類型。在判斷文件類型的時候,可以結合使用 MIME Type,后綴檢查等方式。
因為對于上傳文件,不能簡單地通過后綴名稱來判斷文件的類型,因為攻擊者可以將可執行文件的后綴名稱改為圖片或其他后綴類型,誘導用戶執行。
2)對上傳的文件類型進行白名單校驗,只允許上傳可靠類型。
3)上傳的文件需要進行重新命名,使攻擊者無法猜想上傳文件的訪問路徑,將極大地增加攻擊成本,同時向 shell.php.rar.ara 這種文件,因為重命名而無法成功實施攻擊。
4)限制上傳文件的大小。
5)單獨設置文件服務器的域名。
DDos攻擊客戶端向服務端發送請求鏈接數據包,服務端向客戶端發送確認數據包,客戶端不向服務端發送確認數據包,服務器一直等待來自客戶端的確認,沒有徹底根治的辦法,除非不使用 TCP。
8.DDos 預防:
1)限制同時打開 SYN 半鏈接的數目
2)縮短 SYN 半鏈接的 Time out 時間
3)關閉不必要的服務
更多關于“網絡安全培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。