2011-10-30 58 views
2

可能重複:
PHP: the ultimate clean/secure function這對於一個安全的網站來說足夠了嗎? (4個小功能)

今天我修改我的網站安全過濾器。我曾經過濾輸入,並沒有對輸出做任何事情。

這就是:

所有的用戶輸入變量經過取決於類型這兩個函數:

PS:因爲我我做了所有變量並沒有從頭開始編碼,包括那些不在查詢中使用的。我明白,這是一個表現殺手,並將取消這一點。安全性比抱歉的好嗎?

// numbers (I expect very large numbers) 
function intfix($i) 
{ 
    $i = preg_replace('/[^\d]/', '', $i); 
    if (!strlen($i)) 
     $i = 0; 
    return $i; 
} 

// escape non-numbers 
function textfix($value) { 
    $value = mysql_real_escape_string($value); 
    return $value; 
} 

XSS預防:

輸入 - 過濾用戶提交的文本,訊息和消息。正如你所看到的,它目前是空的。不確定是否需要strip_tags。

輸出 - 所有的HTML輸出

function input($input){ 
    //$input = strip_tags($input, ""); 
    return $input; 
} 


function output($bbcode){ 

$bbcode = textWrap($bbcode); // textwrap breaks long words 
$bbcode = htmlentities($bbcode,ENT_QUOTES,"UTF-8"); 
$bbcode = str_replace("\n", "<br />", $bbcode); 

// then some bbcode (removed) and the img tag 
$urlmatch = "([a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+)"; 

$match["img"] = "/\[img\]".$urlmatch."\[\/img\]/is"; 
$replace["img"] = "<center><img src=\"$1\" class=\"max\" /></center>"; 

return $bbcode; 
} 

我包括img標籤,因爲它可能會受到三網融合

你覺得呢?任何明顯的錯誤?夠好了?

+0

你是什麼意思重複?如果有什麼我曾經用過濾器輸入相同的方式重新編碼的功能。 – domino

+0

有可能的重複我的意思是你的問題的上下文的一部分已經被另一個問題所覆蓋。你的問題在我看來,你想學習如何做適當的編碼,但它看起來與多個內容域混雜在一起,所以我提出了一個重複的問題,它具有同樣的問題,因爲它的主題。例如,你是'mysql_real_escape_string'而不涉及任何mysql。 – hakre

回答

1

看起來沒問題,但是您可以輕鬆地爲文本和整數都創建一個函數,首先檢查其類型並對其執行操作。