2016-04-15 39 views
0

我正在爲我的網站製作登錄系統。我正在努力使這個代碼工作。SQL CommandText混淆雙引號和單引號

cmd.CommandText="SELECT Usernames,Passwords FROM logininfo WHERE Usernames="" + UsernameInput.Text 
     + "AND Passwords="" + PasswordInput.Text + '""; 

我唯一的問題是我很困惑放在哪裏「和」類型的報價。所以這是我遇到的麻煩的代碼。我知道這是正確的,但單和雙引號安置是混淆了我,沒有讓我編譯。

+3

您不應該在網站的數據庫中存儲unhashhed的密碼。有很多很多的教程會教你如何在數據庫中正確存儲密碼。 –

+1

該代碼正在尋求經典的SQL注入攻擊! – code4life

回答

5

請不要串聯SQL,暴露你的SQL注入。 使用的參數來代替。

cmd.CommandText="SELECT Usernames,Passwords FROM logininfo WHERE [email protected] AND [email protected]"; 
cmd.Parameters.AddWithValue("@username", UsernameInput.Text); 
cmd.Parameters.AddWithValue("@password", PasswordInput.Text); 

而且採取建議斯科特張伯倫的評論,存儲passwo是一件壞事rds在數據庫中清除或加密。只需存儲哈希。但請閱讀如何做到這一點,這不是直接的(您需要正確地使用它,並使用強大的哈希算法,如SHA512)。

這太複雜了,不能在這裏解釋,但是你會在這個問題上找到大量的指南。