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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在PostgreSQL中插入帶有單引號(hào)的文本

在PostgreSQL中插入帶有單引號(hào)的文本

繁星coding 2019-06-09 15:21:32
在PostgreSQL中插入帶有單引號(hào)的文本我有張桌子test(id,name).我需要插入如下的值:user's log, 'my user', customer's. insert into test values (1,'user's log');  insert into test values (2,''my users'');  insert into test values (3,'customer's');如果我運(yùn)行上述任何一條語(yǔ)句,我將得到一個(gè)錯(cuò)誤。如果有任何正確的方法,請(qǐng)分享。我不想要任何事先準(zhǔn)備好的陳述。是否可以使用SQL轉(zhuǎn)義機(jī)制?
查看完整描述

3 回答

?
開(kāi)滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

轉(zhuǎn)義單引號(hào)'把它們翻一番->''當(dāng)然,這是標(biāo)準(zhǔn)的方式和工作方式。

'user's log'     -- incorrect syntax (unbalanced quote)
'user''s log'

在舊版本中,或者如果您仍然運(yùn)行standard_conforming_strings = off或者,通常情況下,如果您用E宣布POSIX轉(zhuǎn)義字符串語(yǔ)法,您也可以使用反斜杠逃跑。\:

E'user\'s log'

但這通常并不可取。
如果您必須處理多個(gè)單引號(hào)或多層轉(zhuǎn)義,則可以避免在PostgreSQL中引用地獄美元引號(hào):

'escape '' with '''''$$escape ' with ''$$

為了進(jìn)一步避免美元報(bào)價(jià)之間的混淆,在每對(duì)單引號(hào)上添加一個(gè)唯一的標(biāo)記:

$token$escape ' with ''$token$

可以嵌套任意數(shù)量的級(jí)別:

$token2$Inner string: $token1$escape ' with ''$token1$ is nested$token2$

注意如果$字符在您的客戶端軟件中應(yīng)該有特殊的含義。你可能還得逃離它。對(duì)于psql或pgAdmin這樣的標(biāo)準(zhǔn)PostgreSQL客戶端,情況并非如此。

這對(duì)于編寫plpgsql函數(shù)或即席SQL命令非常有用。但是,它不能減輕使用準(zhǔn)備好的語(yǔ)句或其他方法來(lái)防止在您的應(yīng)用程序中進(jìn)行SQL注入的需要,因?yàn)橛脩糨斎胧强赡艿摹?/trans>@Craig的回答會(huì)有更多的報(bào)道。更多詳情:


查看完整回答
反對(duì) 回復(fù) 2019-06-09
?
繁花不似錦

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

這是很多不好的世界,因?yàn)槟愕膯?wèn)題意味著你可能有裂口。SQL注入你申請(qǐng)表上的漏洞。

您應(yīng)該使用參數(shù)化語(yǔ)句。對(duì)于Java,請(qǐng)使用PreparedStatement帶占位符..你說(shuō)你不想使用參數(shù)化語(yǔ)句,但你沒(méi)有解釋為什么坦率地說(shuō),這必須是一個(gè)非常好的理由不使用它們,因?yàn)樗鼈兪亲詈?jiǎn)單、最安全的方法來(lái)解決您正在試圖解決的問(wèn)題。

看見(jiàn)防止Java中的SQL注入..別這樣鮑比下一個(gè)受害者。

PgJDBC中沒(méi)有用于字符串引用和轉(zhuǎn)義的公共函數(shù)。這在一定程度上是因?yàn)樗赡軙?huì)讓人覺(jué)得這是個(gè)好主意。

那里內(nèi)置引號(hào)函數(shù)quote_literalquote_ident在PostgreSQL中,但是它們是PL/PgSQL使用EXECUTE..這幾天quote_literal大多被淘汰EXECUTE ... USING,也就是參數(shù)化版本,因?yàn)樗?/trans>更安全更容易..您不能將它們用于這里解釋的目的,因?yàn)樗鼈兪欠?wù)器端函數(shù)。


想象一下,如果你得到了這個(gè)值,會(huì)發(fā)生什么?');DROP SCHEMA public;--來(lái)自惡意用戶。你會(huì)產(chǎn)生:

insert into test values (1,'');DROP SCHEMA public;--');

它分解為兩個(gè)語(yǔ)句和一個(gè)被忽略的注釋:

insert into test values (1,'');DROP SCHEMA public;--');

喔,你的數(shù)據(jù)庫(kù)來(lái)了。


查看完整回答
反對(duì) 回復(fù) 2019-06-09
  • 3 回答
  • 0 關(guān)注
  • 4598 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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