2010-12-15 96 views
3

可能重複:
PHP: the ultimate clean/secure function
What's the best method for sanitizing user input with PHP?清潔和在PHP安全字符串

我應該添加到我的功能,以確保每一個通過這將是字符串「服務器-友善'?我使用這個小函數來檢查包含名稱,電子郵件地址和ID的輸入。

function checkInput($str) { 
     $str = @strip_tags($str); 
     $str = @stripslashes($str); 
     $str = mysql_real_escape_string($str); 
     return $str; 
    } 
+0

同意佩卡。但總結一下。沒有你想要做的事情。 – DampeS8N 2010-12-15 15:01:18

+0

一切都是上下文敏感的。不可能有1個功能。例如,你只想對進入數據庫的數據調用一個'mysql_real_escape_string'。你只想在數據被渲染時調用'htmlspecialchars'。所以沒有魔力(不應該存在)... – ircmaxell 2010-12-15 15:04:13

回答

3

服務器友好是什麼意思?

有關驗證,例如電子郵件地址,請查看data filtering

要確保一個字符串是數據庫的使用轉義如mysql_real_escape_string

輸出數據時使用htmlspecialchars

0

有關數據庫,檢查PDO佔位符安全。他們是跨DBMS的。

+0

,它們還提供了一個運行在 – 2012-03-30 15:47:17

5

我會刪除一些特殊字符,它們在這樣的字符串中無所作爲,可以用於代碼注入,例如$%#<> |等等。

$invalid_characters = array("$", "%", "#", "<", ">", "|"); 
$str = str_replace($invalid_characters, "", $str); 
1

我應該添加到我的功能,以確保每一個通過這將是「服務器友好」的字符串?

這應該工作:

function checkInput($str) { 
    return ""; 
} 

對於更詳細的解釋,see here

+0

後面的數據庫引擎的抽象,這沒有什麼幫助。 – MattWithoos 2015-06-02 04:00:44

+4

不,它不是,但我傻笑:) – adrianTNT 2016-03-04 11:48:21