什麼是XSS攻擊?
簡單來說就是當提交表單的時候提交了javascript腳本語言,比如說提交表單的時候在輸入框輸入了<script>alert("ssss")</script>,這會發生什麼情況呢?比如說你在評論區提交了這個表單,那當你刷新頁面的時候每次都會給你彈出一個alert框。
如何預防呢?
簡單的做法可以寫一個過濾器,將javascript裏面的< 和 > 這些特殊符號進行轉義,比如說<轉義爲<。>轉義爲>。等html能識別的字符。
SQL注入
#{} 和${}的區別
使用#{}會對sql進行預編譯,就是相當於使用jdbc時的preparedStatement,sql語句中如果存在參數則會使用?作佔位符,這種方式可以防止sql注入,並且在使用#{}時形成的sql語句,已經帶有引號,例,select * from user where username=#{userName} and password=#{passWord} 當調用這個sql時,會自動加上單引號變爲:select * from user where username='aaaa' and password='1111111'。
使用${}時的sql中的動態參數不會當做字符串處理,如果還是執行上面的這條sql的話:select * from user where username=${userName} and password=${passWord} ,那麼他會變成:select * from user where username=aaaa and password=1111111,當然這樣執行是會報錯的,那爲了解決這個問題的話是不是相對應的我們會在上面的那條sql進行一些處理,比如說加入單引號select * from user where username='${userName}' and password='${passWord}'
這個時候我們執行的話也是能正常調用的,但是當在頁面上我加一些東西,那麼這個問題可能就很嚴重了,比如說我現在一個網站的登錄頁面輸入一個網址:http://localhost/test/login?userName=aaaa&password=' or 1='1,這樣我們的sql會變成select * from user where username='aaaa' and password='' or 1='1'
因此在使用mybatis的時候儘可能使用#{},這樣可以防止sql注入。