看板 talk 關於我們 聯絡資訊
在應用層,最普遍的通訊協議就是HTTP,這個HTTP可以經過TLS/SSL的加密,形成HTTPS。 TLS/SSL在應用層和傳輸層之間,自己形成一層,並在這一層將HTTP訊息加密, TLS/SSL具體使用的加密演算法,是DES、AES、RSA等著名的演算法, 其中DES、AES是對稱加解密演算法、RSA是非對稱加解密演算法。 到了網路層,VPN跟網際網路都是著名的通訊方式,可使用IP作為通訊協議,或是使用 IPsec做為加密版IP的加密通訊方式,具體的加密方式也是用了DES、AES、RSA等演算法。 Spring Security提供對HTTPS的支援;但HTTPS本身只能做到對訊息加解密, 不能防止XSS、CSRF攻擊。 什麼是XSS攻擊?就是跨網站腳本(Script)攻擊。意指某駭客於像是留言板之類可以動態 添加訊息之程式內,添加了某段惡意script(程式碼例如JavaScript), 這段惡意script就存在於這個留言板網站內,等到有不知情的受害者, 透過瀏覽器去開啟執行留言板,這段留言版內的惡意script即會於受害者電腦的 瀏覽器執行,進而攻擊受害者電腦。由於駭客是透過跨越像是留言板這樣的網站來攻擊 受害者,所以這種攻擊又稱作是跨網站攻擊,又因為是利用惡意script來攻擊, 所以又稱作是跨網站腳本攻擊,就是XSS攻擊。 那什麼是CSRF攻擊?就是跨網站偽造請求攻擊。 就是駭客先在某網站注入惡意script,然後利用某個受害者於某網站是受到信任的特點, 等待該受害者進入網頁。 當受害者使用瀏覽器進入該網頁時,駭客利用之前注入的惡意script, 於該網站內誘騙受害者,在不知情的情況下,執行駭客想要他執行的另一段惡意script。 由於受害者在該網站是受信任(比方說有相關憑證),因此即使受害者做的是惡意script, 網站也不會有所懷疑,進而使受害者在不知情的狀況下執行駭客要做的事。 受害者是在網頁內部,所以是於自身電腦的瀏覽器執行這惡意script, 受害者電腦因此被攻擊。 駭客就這樣透過跨越網站、且網站信任受害者的方式,攻擊遠端某個受害者的電腦。 所以這也是跨網站攻擊;又因為網站以為這是受害者自己的請求而非駭客讓受害者做的, 所以也可以說是駭客偽造了受害者的請求,因此這種攻擊又稱做跨網站請求偽造攻擊。 Spring Security提供防止XSS、CSRF攻擊、session hijacking的設定。 什麼是session hijacking?就是我們知道在瀏覽器端跟伺服器端,使用者的資訊是透過 包裝在http請求與回應的cookie來傳遞的。 cookie內含一個叫sessionid的值, 透過這個值,可以讓瀏覽器跟伺服器去辨認同一個使用者;然後伺服器會利用這個 sessionid去包裝出http session。 所以如果駭客要去影響某個使用者的資訊,可以於http請求和回應在網路傳遞時, 去竊取http請求和回應,內含的cookie與sessionid,竊取出sessionid後即可去 影響伺服器端的http session。這就是session hijacking。 通常在JAVA Web專案,要做到以HTTPS來取代HTTP,除了針對伺服器做設定, 也必須在專案內,添加Spring Security的dependency即可。 不一定非得要實作Spring Security的code。 ------------------------------------------ 但是Spring Security並不能阻止時序攻擊。 什麼是時序攻擊?就是針對含有時間(例如新增時間、修改時間、時間排序)的資料, 搜尋時間先後與資料的關聯性,進而找出攻擊方式,比方說時間到了就自動竄改資料。 這種攻擊因為是資料被竄改,所以可以透過事先備份資料, 然後定時去比對原始資料hash code與備份資料hash code的差異, 若兩者的hash code相同即可證明資料並沒有被竄改。 這在Java Web領域,是利用其他的函式庫來實作。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.142.148 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/talk/M.1704384298.A.76D.html ※ 編輯: TKB5566 (120.126.126.5 臺灣), 01/10/2024 16:20:50