是將數據提交到您的表應該剝奪任何應用程序這是一個很好的做法。當然,並非所有的應用程序都可以。
如果你不使用存儲過程,我建議你創建的INSERT和更新數據庫表中的觸發器,並檢查是否任何非法串試圖進入,如果他們這樣做,拒絕該行。 SQL有一些字符串操作關鍵字,如CHARINDEX,我個人會檢查常見的字符,如「\」「;」,「$」,「&」等
我也想嘗試並篩選出任何有已經進入你的表和刪除的行:
DELETE FROM Table
WHERE Field LIKE '%<script>%'
另外,如果你使用一個存儲過程,每個字段作爲參數傳遞,然後這些字符不會進入你的數據庫。
CREATE TRIGGER [dbo].[tr_CheckSQLInjection]
ON [dbo].[Notes]
FOR INSERT, UPDATE
AS
BEGIN
BEGIN TRANSACTION T_CHECKCHARACTERS
BEGIN TRY
-- YOUR LOGIC TO STRIP OUT THE CHARACTERS HERE
COMMIT TRANSACTION T_CHECKCHARACTERS
END TRY
BEGIN CATCH
RAISERROR('UNABLE TO COMMIT THE TRANSACTION', 1, 1)
ROLLBACK TRANSACTION T_CHECKCHARACTERS
END CATCH
END
達倫, 我認爲它是一個偉大的想法在這方面bcoz我使用傳統的ASP和asp.net沒有存儲過程在一起。不幸的是,我不熟悉這個觸發器。你能把我連接到一個很好的例子嗎? – 2012-03-29 08:03:55
觸發器:http://www.sqlteam.com/article/an-introduction-to-triggers-part-i 我編輯我的帖子,包括一個例子太多。 – 2012-03-29 08:06:42
我也建議閱讀SQL注入,就像其他人提到的一樣。 – 2012-03-29 08:12:08