2010-04-08 62 views
2

如果我想獲得電子郵件地址爲'[email protected]'的用戶,我如何將它作爲linq中的參數傳遞?如何安全地將參數傳遞到linq到sql

即:

var a = from u in Users 
     where u.Email = @email 
     Select u; 

所以這會在我的方法可以使用:

public static GetuserByEmail(string email) 

難道我只是通過在變量或?

回答

8

Linq To SQL自動爲您處理SQL注入保護。如果您擔心SQL注入,那麼從用戶那裏傳入參數是安全的。

它會自動參數化您傳入的參數並對其進行消毒。

如果您擔心XSS,那麼您可以輸出Html.Encode()以確保它安全地傳回UI。

public User GetUserByEmail(string email) 
{ 
    User a = (from u in db.Users 
     where u.Email == email 
     select u).Single(); 
    return a; 
} 

我目前不在IDE的前面,因此代碼可能不是通過合成正確的方式。

+2

它做的SQL注入你嗎?這聽起來不太好:)最好說LinqToSql創建參數化查詢,以避免SQL注入的危險。 – 2010-04-08 20:00:32

+2

我沒有說'是',我說'處理'。 – 2010-04-08 20:01:42

+1

他的發言對我有意義。 : - / – Jaxidian 2010-04-08 20:02:00

0
var a = from u in Users 
    where u.Email == email 
    select u; 

將很好地工作(LINQ to SQL中會生成一個參數化的SQL查詢)

PS:你需要兩個 '=' 爲等於操作