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

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

如何防止 PostgreSQL JSON/JSONB 字段中的 SQL 注入?

如何防止 PostgreSQL JSON/JSONB 字段中的 SQL 注入?

Go
慕標5832272 2023-06-01 14:16:41
使用“數(shù)據(jù)庫/sql”時如何防止 Go 中的 SQL 注入攻擊?這解決了單值字段問題,因為您可以刪除引號,但我無法過濾 JSON/JSONB 字段,如下所示,因為 被$1視為字符串:`SELECT?*?FROM?foo?WHERE?bar?@>?'{"baz":?"$1"}'`以下是可行的,但它容易出現(xiàn) SQL 注入:`SELECT?*?FROM?foo?WHERE?bar?@>?'{"baz":?"`?+?"qux"?+?`"}'`我該如何解決這個問題?我將如何使用這些函數(shù)構(gòu)建這個[{"foo": $1}]json?jsonb_*?嘗試了以下但沒有成功:jsonb_build_array(0,?jsonb_build_object('foo',?$1::text))::jsonb沒有sql錯誤。過濾器不起作用。有一種方法可以檢查構(gòu)建的 sql 嗎?我正在使用database/sql本機庫。
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

這是你要找的嗎?


type MyStruct struct {

? ? Baz string

}


func main() {

? ? db, err := sql.Open("postgres", "postgres://...")

? ? if err != nil {

? ? ? ? log.Panic(err)

? ? }


? ? s := MyStruct{

? ? ? ? Baz: "qux",

? ? }


? ? val, _ := json.Marshal(s)

? ? if err != nil {

? ? ? ? log.Panic(err)

? ? }


? ? if _, err := db.Exec("SELECT * FROM foo WHERE bar @> ?", val); err != nil {

? ? ? ? log.Panic(err)

? ? }

}

附帶說明一下,Exec它不是用于檢索的(盡管我為您保留了它,因此解決方案將與您的示例相匹配)。



查看完整回答
反對 回復 2023-06-01
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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