楼主:
TKB5566 (我们的元首阿道夫希特勒)
2024-01-05 00:04:56在应用层,最普遍的通讯协议就是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。