1. 程式人生 > >java防sql注入方法小結

java防sql注入方法小結

本文對java操作資料庫的一項重點內容——防sql注入進行說明。對現有方法進行了簡單優劣討論與總結,供大家參考討論。

重點:不要將使用者輸入內容,在未經檢查的情況下,直接拼接為sql語句進行資料庫訪問操作。

防sql注入方法如下:

  • 過濾輸入
    對輸入內容進行充分過濾,可以利用正則表示式進行匹配。
    例如:“(?:’)|(?:–)|(/\*(?:.|[\n\r])?\/)|(and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare)”
    優點:可快速完成對存在sql注入隱患的程式改造;
    缺點

    :會對包含過濾關鍵字的正常內容進行過濾,可能影響正常功能;過濾可能不完備,依然存在sql注入隱患。

  • 預編譯語句
    採用預編譯語句集(PreparedStatement),它內建了處理SQL注入的能力,只要使用它的setXXX方法傳值即可。
    優點:程式碼的可讀性和可維護性;PreparedStatement盡最大可能提高效能;最重要的一點是極大地提高了安全性。
    缺點:對每一條資料庫操作語句都需要進行處理,程式碼開發會比較麻煩一些。

  • 使用框架
    使用框架標準的資料庫訪問類,如:Hibernate框架的Criteria、HibernateDaoSupport等類,並且可以使用反射技術,使得程式碼通用性比較高。
    優點

    :框架由經驗豐富的程式設計師開發,遠比自己開發的程式要完備;直接使用框架,不用考慮具體細節。
    缺點:需要對框架進行學習,遵循框架規則進行使用。

==================================
==疑問?幫助?批評?歡迎評論 | QQ:593159978==
==================================