XSS攻擊

什麼是XSS攻擊?

簡單來說就是當提交表單的時候提交了javascript腳本語言,比如說提交表單的時候在輸入框輸入了<script>alert("ssss")</script>,這會發生什麼情況呢?比如說你在評論區提交了這個表單,那當你刷新頁面的時候每次都會給你彈出一個alert框。

如何預防呢?

簡單的做法可以寫一個過濾器,將javascript裏面的< 和 > 這些特殊符號進行轉義,比如說<轉義爲&lt;。>轉義爲&gt;。等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注入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章