- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- SpringBoot如何防止XSS注入攻擊詳解
在跨站腳本(XSS)攻擊中,攻擊者可以在受害者的瀏覽器中執行惡意腳本。這種攻擊通常是通過(guò)在網(wǎng)頁(yè)中插入惡意代碼 (JavaScript) 來(lái)完成的。攻擊者在使用攻擊后一般能夠:
如果被攻擊的用戶(hù)在應用程序中具有更高的權限。攻擊者可以完全控制應用程序,并破壞所有用戶(hù)及其數據。
常見(jiàn)的 XSS 攻擊主要有三種:存儲型 XSS 攻擊,反射型 XSS 攻擊和 DOM-based 型 XSS 攻擊。
下面是一個(gè)簡(jiǎn)單的POST方法,模擬創(chuàng )建 Book 并將其保存到數據庫中。
@RestController @RequestMapping("/books") public class BookController { @Autowired IBookService bookService; @PostMapping public void saveBook(@RequestBody Book book) { bookService.save(book); } }
我們可以在保存的時(shí)候,對 type 值做一段 js 注入,來(lái)模擬存儲型 XSS 攻擊。
現在我們來(lái)請求一下,這里的 JavaScript 只會(huì ) alert 一個(gè)語(yǔ)句,但這種漏洞就有可能被別人利用來(lái)注入一些其他的惡意代碼:
一些瀏覽器內置了對過(guò)濾反射型 XSS 攻擊的支持。在一定程度上有助于 XSS 保護。 我們需要在 HTTP 響應頭添加如下內容確保已啟用該功能,并指示瀏覽器在檢測到 XSS 攻擊時(shí)進(jìn)行阻止。
X-XSS-Protection: 1; mode=block
如果你的項目引入了 Spring Security ,那么默認情況下就會(huì )自動(dòng)添加此標頭。
兼容 內容安全策略 瀏覽器將僅執行從我們的“允許”列出的域接收的源文件中加載的腳本,而忽略所有其他腳本,例如內聯(lián)腳本。我們可以添加以下標頭來(lái)啟用瀏覽器的內容安全策略功能。
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { httpSecurity .csrf().disable()//為了簡(jiǎn)化示例并更清楚地說(shuō)明XSS注入,此處禁用了CSRF保護。真實(shí)情況請勿使用。 .authorizeRequests().anyRequest().authenticated() .and().httpBasic() .and() .headers().contentSecurityPolicy("script-src 'self'"); } }
以下是所有支持 CSP 的瀏覽器:
我們知道該字段僅需要中文英文和數字字符,因此我們可以使用 Spring 的 Validator 在字段中添加@Pattern注解。
@NotNull @Pattern(message="種類(lèi)只能支持中文英文數字", regexp = "[\u4e00-\u9fa5_a-zA-Z0-9]+") private String type;
然后將 @Valid 添加到接收 Book 的方法中,這樣當發(fā)生請求時(shí)就會(huì )自動(dòng)驗證:
@PostMapping public void saveBook(@RequestBody @Valid Book book) { bookService.save(book); }
現在主流的幾種前端框架,像 Angular 、 React 、 Vue 也可以避免傳統開(kāi)發(fā)可能帶來(lái)的問(wèn)題:
防止 XSS 漏洞主要涉及以下措施的組合:
到此這篇關(guān)于SpringBoot如何防止XSS注入攻擊的文章就介紹到這了,更多相關(guān)SpringBoot防止XSS注入攻擊內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站