2014-02-16 36 views
0

在這裏將我的頭撞在牆上。但是我使用utf8_general_ci編碼和類型是在MySQL DB查詢在使用PHP插入時隨機失敗mcrypt

tinyblob我用Mcrypt的行UNAME,pwrod和電子郵件中插入可見。有時候會插入,有些則不會。這顯然取決於用於生成加密的字符串。

這是我的插入

INSERT INTO `users` (`uname` , `pword` , `email` , `gender` , `provider` , `level` , `dob` , `confirmed` , `regdate` , `confirmationCode`, `ip`) 
VALUES ('「­É.¡Ec', '$2a$15$3G.7Pfap0dfWnEZxVPKWjewcLUA6tYm7a1al6I0QNZUCNcdl6E6Mu', 'ðÖŒÅÕ'Ý£mY]ª±¼ ôn´}Ð>d¢', '0','manual', '0', '2014-02-16', '0',NOW(), 'f5ab855e95eab47948b05cfe5a03e4d6', '127.0.0.1'); 
Error Nr: 1064 Error Msg: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ý£mY]??? ?n?}?>d?', '0','manual', '0', '2014-02-16', '0',NOW(), 'f5ab855e95eab' at line 14 

如果我改變'`然後我得到以下錯誤:

Error Nr: 1300 Error Msg: Invalid utf8 character string: '\x93\xAD\xC9.\xA1E\x04c' 

我想我需要改變我的char encoding?但是,這是我的知識倒下(和只是一般所有編碼:))

+0

你真的需要加密任何的。 – 2014-02-16 21:00:40

+0

可悲的是我:(我使用的數據需要完全謹慎!不好的時候,但是很不好意思。) –

+0

如果我偷了你的分貝,我可能還有加密密鑰嗎?它在哪裏存儲? – 2014-02-16 21:03:05

回答

2

您是從SQL injection attack漏洞痛苦:

[..snip..], 'ðÖŒÅÕ'Ý£mY]ª±¼ ôn´}Ð>d¢',[..snip..] 
       ^--start string 
        ^---end string 

你正確建立查詢 - 或是不逃避數據你是查詢字符串中的東西,或者不使用數據庫庫的預編譯語句/佔位符功能。

+0

好,其實很明顯的地方,謝謝。我會在那裏給帽子快速旋轉。可憐的boby桌子!如果我可以馬克是一個問題,如果我逃避'''這不意味着我將不得不在解密時刪除它們嗎? –

+0

對escpaing字符串問題的任何想法marc/ –

+0

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –