2013-10-25 170 views
-2

我有一個應用程序說查詢生成器,它需要從用戶的SQL查詢的輸入,從表中選擇一些數據避免SQL注入

我正在執行在SQL Server中此查詢現在

我要停止用戶使用其他的命令比DQL命令

是否有可能在SQL Server本身

做是否有在SQL Server中的任何命令,它可以告訴其是否DQLcommand與否,那麼以後我也可以限制

感謝

+1

你將不得不更加具體嗎? SQL如何輸入? 你可以鎖定參數,還是隻是明文? 您可以讓他們與不同的數據庫用戶連接,並且權限有限 –

+0

@M Akela:哪個查詢!?!? –

+0

輸入是什麼?謹慎的條款?或SQL? –

回答

1

其SQL Server查詢

這將是非常難以鎖定;你可以使用SQL服務器的權限,但它仍然很容易做到這一點很糟糕的東西(例如,它不需要很多大表的交叉連接來有效地服務器脫機 - 或者他們可以打開一個可序列化的事務,從某些表中選擇,而不是關閉事務)。我會強烈建議不要讓用戶寫sql。給他們其他工具來做他們需要的東西。

另外,運行在不同的服務器上查詢 - 理想,你有推一個安全版本的數據(即沒有任何PII) - 在那裏,如果他們主宰服務器並不重要,因爲它是不連接到任何重要的東西有點像SEDE

+0

是的,通常最好的做法是將db報告作爲生產db的鏡像(定期從生產中刷新),所以報告查詢不會減慢生產速度。有用於製作報告的應用程序。 - 例如Microsoft Report Builder或Korzh Easy Query。 –