2012-01-04 45 views
1

例如:是否有必要使用mysql_real_escape_string()將圖像轉換爲mysql?

$data = file_get_contents($_FILES['image']['tmp_name']); 
    $data = mysql_real_escape_string($data); 
    mysql_query("INSERT INTO table set image='$data'.... 

這是一個正確的方式來堅持?

+0

地獄,爲什麼不呢? :O – Anonymous 2012-01-04 05:06:15

+1

由於編碼類型,數據類型和一些其他因素,您可能會丟失數據完整性。 – khael 2012-01-04 05:10:45

+1

mysql擴展已過時,正在棄用。新代碼應該使用mysqli或PDO,它們都具有重要的優點,例如支持預處理語句。準備好的語句參數不容易受到SQL注入的影響。 – outis 2012-01-04 05:21:06

回答

0

我會建議保留它,除非有理由刪除它,因爲它是一種防止sql注入的好方法。看到這裏:http://php.net/manual/en/function.mysql-real-escape-string.php

這可能是通過用戶可以上傳或客戶端可能意外使用的圖像進行sql注入。

不使用它的原因可能是性能。我傾向於建議性能安全。

6

你可以做一個base64_encode,讓您的數據的完整性,並確保你不會有任何形式的字符的問題,實際上它是保持和傳輸數據非常常見的方式。並讓它回來使用base64_decode

+1

+1,尼斯解決方案! – Dessus 2012-01-04 05:10:40

+0

使用base64有什麼意義?爲什麼base64,而不是AES或uuencode或其他編碼/加密?爲什麼無用的轉換呢? – 2012-01-04 05:11:38

+0

@ Col.Shrapnel它不是沒用的。 AES速度較慢,用於加密。 base64沒有特殊的字符可能會毀了你的一天,然後它有一個很好的輸出字符串,並沒有那麼慢。最好的部分就是解決安全問題。 – khael 2012-01-04 05:14:02

相關問題