那麼,作爲加密的新手,我終於找到了一個很好的系統。問題是,我很確定它打破了我的SQL查詢。如果你們中的任何一位能夠幫助我,我肯定這是我輕易忽視的東西。這是我用來生成密鑰的代碼:加密破壞MySQL查詢?
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
extract($rsa->createKey());
這是加密的代碼:
openssl_public_encrypt($data, $encrypted, $publickey);
return $encrypted;
的這一切上面正常工作,而且我已經通過一個函數調用。所有的加密本身都有效。問題是,當我嘗試將值存儲在MySQL數據庫中時,我的查詢隨機失敗。
當我打印查詢調試,我看到加密的字符串 「��y�6u�������2�N���Ī� :������7�����B����<�������7�;[�N\�����y/�X��ßÖŸ*���
=�- �����Z�EI)�'�cy/�I��#?��1Gh��$�d�
它有時會過早地結束查詢字符串。我想知道是否有一個特定的字符集,我應該指定,或者如果我需要更改MySQL數據類型(它被設置爲LONGTEXT,然後LONGBLOB)。
再次感謝提前!
你需要在查詢中使用它之前,它編碼爲base64或十六進制。查詢不允許包含二進制數據,它們必須是可打印的,即使在數據庫中允許爲查詢本身存儲二進制數據,它也必須被「消毒」和「可打印」。 – Patashu
您在查詢中未執行的輸入清理需要在所有查詢中的任何地方完成,以確保您的腳本安全。輸入中的特殊字符不應影響您的查詢。 – Paulpro
的可能的複製[如何防止在PHP中SQL注入?(http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php)。到目前爲止,您顯然將注入原始輸入到SQL中。 –