2011-02-04 68 views
1

對於我的高級設計項目,我製作了一個包含大量子工具的iGoogle類型應用程序。該應用程序使用大量的AJAX。由於這些信息在發送到客戶端時會存儲在頁面上,因此我可以在添加/刪除工具時對其進行更新等等。SQL Server更新/插入/刪除連接問題

我的問題來自於安全方面。我不想確保數據不會被客戶端篡改,從而允許用戶潛在影響其他用戶的數據。

我想要做的是在插入/更新/刪除語句時檢查用戶標識,以確保用戶只更改他們的數據。

這對使用用戶表中的用戶標識作爲外鍵的第一個表不存在問題。但是我有許多其他的桌子從那裏分開。

有沒有辦法做,而不做兩個單獨的語句/查詢?我知道我可以做一個選擇連接,看看這樣的記錄是否存在,然後執行更新/插入/刪除操作。一個陳述可以做到嗎?

我開始研究SQL Server的子查詢。這可以通過子查詢完成嗎?

如果這是一個愚蠢的問題,請原諒我的無知。仍在學習。謝謝。

+0

那麼,如何阻止我提交假的用戶ID與我的惡意數據? – 2011-02-04 19:52:19

+0

我知道你的問題只是關於如何在SQL Server中保護數據,但這是設計體系結構很重要的地方。是的,您應該使用存儲過程,並且是的,您可以使用聯接或子查詢來確定執行用戶是否可以操縱某些數據。但是,這些規則/限制也應該「也」在您的用戶界面中執行。想象一下,作爲一個用戶,你在UI中修改所有這些東西,然後嘗試提交你的修改。然後,應用大聲對你說,因爲後端(即SQL Server)說你不能修改你試圖修改的內容。作爲一個用戶,你只是浪費時間。 – bitxwise 2011-02-04 19:56:26

回答

0

您可以使用一條SQL語句,只要確保您將用戶標識傳入存儲過程即可。

是的,你可能會在插入語句中使用子查詢。如果你提供一個表結構的例子,我們可以給你一個更具體的答案。

至於安全方面(我知道這不是你的問題的一部分),你如何通過客戶端和服務器之間的用戶ID?

+0

這是數據庫架構的較舊版本,但也足夠好:https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0Bwy4qFl6LwWXNGQxODg4MGYtYzlmZS00MTZlLWIzNjctNGIxNjRiZWZmNzJj&hl=en – user603682 2011-02-04 19:58:08

0

這是你在找什麼?

Select Table1.userId 
From Table1 
JOIN Table2 on Table1.usedId = table2.userId 
where table1.userId = @userId 

如果查詢返回null,則在table2中找到匹配記錄。