語境通過一致性檢查,我的意思是消除肯定不會返回任何內容的查詢。例如:考慮 table boxes,其中一個可用列是color CHAR(6);用戶通過與前端的交互發送此字符串'abcdefg'以對列進行查詢;color然后,后端將SELECT * FROM boxes WHERE color = ?使用上述相同的字符串執行類似于 的查詢;至少在我的 PostgreSQL 安裝中,我可以執行這個查詢,即使知道它永遠不會返回任何東西(長度'abcdefg'為 7)。目前,前端和后端都在從我們的數據庫訪問數據之前執行一致性檢查(以避免不必要的調用)。事實上,前端旨在禁止用戶請求無效查詢。但是假設這些檢查沒有發生,特別是在后端,這對應用程序有多重要?問題PostgreSQL 如何處理這些查詢,是否有任何類型的算法在執行此類查詢時立即不返回任何內容?或者最好不要調用數據庫而只向用戶發送類似not foundor的東西invalid request?進一步的背景我們已經對從前端接口獲取的所有輸入進行了清理,因此這不是關于執行這些檢查后獲得的安全性可能帶來的好處/壞處的問題。我們后端使用的語言是 Go,我相信它在定期執行這些檢查時沒有問題(即在大多數 HTTP 請求上)。PS.:我知道你可以在 PostgreSQL 中將十六進制轉換為整數,這只是一個假設問題,我用來簡化對問題的理解(我希望它確實如此)。
后端是否應該在 SQL 查詢之前執行一致性檢查?
幕布斯6054654
2022-04-26 10:34:15