亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java-轉義字符串以防止sql注入

Java-轉義字符串以防止sql注入

慕碼人2483693 2019-06-20 17:14:11
Java-轉義字符串以防止sql注入我試圖在java中引入一些反SQL注入,我發現很難使用“replaceAll”字符串函數。最終,我需要一個轉換任何現有函數的函數。\到\\,任何"到\",任何'到\',還有任何\n到\\n這樣,當字符串被MySQL計算時,SQL注入就會被阻塞。我已經整理了一些我正在使用的代碼和所有的\\\\\\\\\\\在功能上讓我的眼睛發狂。如果有人碰巧有這樣的例子,我會非常感激的。
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

PreparedStatement是可行的,因為它們使SQL注入成為不可能。下面是一個簡單的示例,將用戶的輸入作為參數:

public?insertUser(String?name,?String?email)?{
???Connection?conn?=?null;
???PreparedStatement?stmt?=?null;
???try?{
??????conn?=?setupTheDatabaseConnectionSomehow();
??????stmt?=?conn.prepareStatement("INSERT?INTO?person?(name,?email)?values?(?,??)");
??????stmt.setString(1,?name);
??????stmt.setString(2,?email);
??????stmt.executeUpdate();
???}
???finally?{
??????try?{
?????????if?(stmt?!=?null)?{?stmt.close();?}
??????}
??????catch?(Exception?e)?{
?????????//?log?this?error
??????}
??????try?{
?????????if?(conn?!=?null)?{?conn.close();?}
??????}
??????catch?(Exception?e)?{
?????????//?log?this?error
??????}
???}}

無論名稱和電子郵件中有哪些字符,這些字符都將直接放在數據庫中。它們不會以任何方式影響INSERT語句。

對于不同的數據類型,有不同的集合方法-使用哪種方法取決于數據庫字段是什么。例如,如果數據庫中有整數列,則應使用setInt方法。籌備情況文件列出所有可用于設置和獲取數據的不同方法。


查看完整回答
反對 回復 2019-06-20
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

防止SQL注入的唯一方法是使用參數化SQL。構建一個比以黑客SQL為生的人更聰明的過濾器是不可能的。

因此,請為所有輸入、更新和WHERE子句使用參數。動態SQL只是為黑客打開的一扇門,其中包括存儲過程中的動態SQL。參數化,參數化。


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 1839 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號