第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用準(zhǔn)備語句的可變列名

使用準(zhǔn)備語句的可變列名

子衿沉夜 2019-07-04 17:49:20
使用準(zhǔn)備語句的可變列名我想知道是否存在使用準(zhǔn)備好的語句指定返回的列名。我正在使用MySQL和Java。當(dāng)我嘗試的時候:String columnNames="d,e,f"; //Actually from the user...String name = "some_table";  //From user...String query = "SELECT a,b,c,? FROM " + name + " WHERE d=?"; //...stmt = conn.prepareStatement(query);stmt.setString(1, columnNames);stmt.setString(2, "x");我得到這種類型的語句(在執(zhí)行之前打印)。SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'不過,我希望看到:SELECT a,b,c,d,e,f FROM some_table WHERE d='x'我知道我不能像前面提到的那樣,對表名這樣做。這里,但我想知道是否有什么方法可以用于列名。如果沒有,那么我只需要嘗試并確保我清理了輸入,這樣它就不會導(dǎo)致SQL注入漏洞。
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個贊

這表明DB設(shè)計(jì)錯誤。用戶不需要知道列名。創(chuàng)建一個包含這些“列名”的真正DB列,并將數(shù)據(jù)存儲在其中。

無論如何,不能將列名設(shè)置為PreparedStatement價(jià)值。只能設(shè)置列。價(jià)值PreparedStatement價(jià)值

如果您想繼續(xù)這個方向,您需要清理列名并自己連接/構(gòu)建SQL字符串。引用單獨(dú)的列名并使用String#replace()若要在列名中轉(zhuǎn)義相同的引號,請執(zhí)行以下操作。


查看完整回答
反對 回復(fù) 2019-07-04
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

我認(rèn)為這種情況不能工作,因?yàn)闇?zhǔn)備好的語句的全部目的是防止用戶輸入未轉(zhuǎn)義的查詢位,所以您總是會引用或轉(zhuǎn)義文本。

如果要安全地影響查詢結(jié)構(gòu),則需要使用Java對此輸入進(jìn)行清理。


查看完整回答
反對 回復(fù) 2019-07-04
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個贊

public void MethodName(String strFieldName1, String strFieldName2, String strTableName)

{

//Code to connect with database

String strSQLQuery=String.format("select %s, %s from %s", strFieldName, strFieldName2, strTableName);

st=conn.createStatement();

rs=st.executeQuery(strSQLQuery);

//rest code

}


查看完整回答
反對 回復(fù) 2019-07-04
  • 3 回答
  • 0 關(guān)注
  • 469 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號