2013-01-24 111 views
0

我已經做了一個簡單的功能,以防止從sql注入和XXS 這裏是我的代碼,對此的任何建議?這對於安全性來說足夠好嗎?PHP安全功能

function mres($input){ 
    if(get_magic_quotes_gpc()){ 
     $input=stripslashes($input);  
    } 
    $input=htmlentities($input, ENT_COMPAT, 'UTF-8'); 
    return mysql_real_escape_string($input); 
} 
+0

http://stackoverflow.com/q/4223980/285587 –

回答

2

這是錯誤的,至少有兩種方式:

打開的 magic_quotes
  1. 完全如果你能。至少你沒有使用它,但$input可能不是標量
  2. htmlentities是爲顯示,而不是存儲。永遠不要編碼存儲!
  3. mysql_*函數已被棄用。當您調用它時,不能保證您將有一個打開的mysql連接(必需)。

http://us3.php.net/manual/en/function.mysql-real-escape-string.php

+0

所以是沒有辦法解決這個功能? –

+0

@chienpinwang不,在這一點上是不可修復的。放棄它及其所有內容。開始使用'PDO'。 –

0

看你實際上在做什麼:

魔術引號是一個整體的逃避所有傳入的數據,它讓你脆弱,因爲單獨逃避不會使你的數據「安全「 以任何方式。

所以,你正在清理這些散裝逃逸......然後應用同樣的再度外泄:)

+0

不完全是......'mysql_real_escape_string'和'addslashes'不等價。加'htmlentities'編碼將被轉義的引號。 –