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

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

后端是否應(yīng)該在 SQL 查詢之前執(zhí)行一致性檢查?

后端是否應(yīng)該在 SQL 查詢之前執(zhí)行一致性檢查?

Go
當(dāng)年話下 2023-08-14 14:51:42
語境通過一致性檢查,我的意思是消除肯定不會(huì)返回任何內(nèi)容的查詢。例如:考慮表boxes,其中可用列之一是color CHAR(6);用戶通過與前端的交互發(fā)送該字符串'abcdefg'以針對(duì)列進(jìn)行查詢;color然后,后端將SELECT * FROM boxes WHERE color = ?使用上面提到的相同字符串執(zhí)行類似于 的查詢;至少在我的 PostgreSQL 安裝中,我可以執(zhí)行這個(gè)查詢,即使知道它永遠(yuǎn)不會(huì)返回任何內(nèi)容(長(zhǎng)度為'abcdefg'7)。目前,前端和后端都會(huì)在從數(shù)據(jù)庫(kù)訪問數(shù)據(jù)之前執(zhí)行一致性檢查(以避免不必要的調(diào)用)。事實(shí)上,前端的設(shè)計(jì)就是為了禁止用戶請(qǐng)求無效的查詢。但假設(shè)沒有進(jìn)行這些檢查,尤其是在后端,這對(duì)應(yīng)用程序有多重要?問題PostgreSQL 如何處理這些查詢,它是否有任何類型的算法在執(zhí)行此類查詢時(shí)立即不返回任何內(nèi)容?或者不調(diào)用數(shù)據(jù)庫(kù)而只向用戶發(fā)送類似not found或 的內(nèi)容會(huì)更好嗎invalid request?進(jìn)一步的背景我們已經(jīng)清理了從前端接口獲取的所有輸入,因此這不是關(guān)于執(zhí)行這些檢查后獲得的安全性可能帶來的好處/壞處的問題。我們后端使用的語言是 Go,我相信它在定期執(zhí)行這些檢查(即在大多數(shù) HTTP 請(qǐng)求上)時(shí)沒有問題。PS:我知道你可以在 PostgreSQL 中將十六進(jìn)制轉(zhuǎn)換為整數(shù),這只是一個(gè)假設(shè)的問題,我用它來簡(jiǎn)化對(duì)問題的理解(我希望它能做到)。
查看完整描述

1 回答

?
12345678_0001

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

我會(huì)在前端或后端執(zhí)行此類檢查,只要最方便,但不會(huì)同時(shí)在兩者中執(zhí)行。第二道防線是數(shù)據(jù)庫(kù),兩道就足夠了。

在應(yīng)用程序中找到不正確的數(shù)據(jù)是一件好事,但不要太過分:如果您在數(shù)據(jù)庫(kù)和應(yīng)用程序中硬編碼諸如最大字符串長(zhǎng)度之類的內(nèi)容,則必須在兩個(gè)地方修改該限制無論何時(shí),代碼冗余都是一件壞事。

仍然理智的東西在很大程度上取決于品味和意見:我認(rèn)為檢查應(yīng)用程序中的長(zhǎng)度限制而不是依賴數(shù)據(jù)庫(kù)中的錯(cuò)誤是很好的,但我認(rèn)為用猜測(cè)的復(fù)雜邏輯給應(yīng)用程序增加負(fù)擔(dān)是值得懷疑的SQL 語句的結(jié)果。

重要的是對(duì)數(shù)據(jù)庫(kù)中所有重要的一致性檢查進(jìn)行建模,只要捕獲并妥善處理數(shù)據(jù)庫(kù)錯(cuò)誤,就不會(huì)出現(xiàn)任何問題。除此之外的一切都可以被視為性能調(diào)整,并且只有在它提供了明顯的好處時(shí)才應(yīng)該進(jìn)行。


查看完整回答
反對(duì) 回復(fù) 2023-08-14
  • 1 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(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)