1
我有一個系統,我希望人們可以用許多表對多個數據庫執行任意選擇查詢。使用內部SELECT查詢「消毒」任意SQL?
我可以通過簡單地將它們嵌入到子查詢中來「消毒」查詢,即SELECT * FROM ($USER_SELECT_QUERY)
?
這將允許用戶做任何種類的SELECT查詢,但會在任何INSERT
,UPDATE
,DELETE
,EXEC
等查詢中產生語法錯誤。你能想出任何可以修改/插入/刪除數據的查詢,或者顯示關於主機系統的其他不想要的細節,例如目錄列表或其他任何內容嗎?
假設:
- 用戶可以訪問在所有附加的數據庫的所有數據。
- 適當配置/監視查詢時間和資源使用情況以減輕(D)DOS攻擊。
- (數據庫是在我的情況只讀sqlite的文件)
還請注意,我充分認識到讓用戶來執行任意SQL的一般危險的,所以我想強調的是我m非常具體地詢問使用select-subqueries進行消毒查詢的限制。
爲什麼不設置用戶只讀取數據庫上的訪問權限作爲安全級別?這似乎是一個不必要的複雜因素。 –
我的推理是限制允許的陳述範圍。 'ATTACH'可能是sqlite中的一個問題,其他「怪異」語句如'EXPLAIN'和'VACUUM'在用戶應該允許做的範圍之外。 – jkgeyti