2012-03-12 102 views
0

我有一個問題需要澄清以最安全的方式將表單數據寫入mysql數據庫的最佳方法,以防止數據庫攻擊,同時剝離html標記。下面我有一個名爲form_write的函數來完成此操作,然後在聲明每個表單變量時在代碼中使用它。將html表單發佈到mysql數據庫並避免數據庫攻擊

function form_write($string) 
    { 
    return mysql_real_escape_string(strip_html_tags($string)); 
    } 

$name = form_write($_POST['name']); 
$email = form_write($_POST['email']); 
...etc 

將不勝感激,如果任何人都可以看看,讓我知道如果我在正確的軌道上,或者如果存在要這樣做更好的方法。

謝謝

回答

0

是的,剝離標籤和轉義輸入使其安全。稍後,您可以添加一個額外的驗證圖層來輸入變量。例如驗證電子郵件,您可以使用:

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
    throw new Exception('Invalid e-mail address'); 
} 

PHP有很多的過濾器,見filter_varlist of filters

+0

感謝您的額外信息。我沒有使用異常來驗證 - 只是我自己的PHP代碼。我會檢查出來 – 2012-03-12 17:31:32

+0

好了,這個片段中的重要部分是驗證輸入的filter_var()函數。異常只是引發錯誤的一種方式。 – 2012-03-12 17:36:18

+0

沒錯,謝謝你指出 – 2012-03-12 18:21:54

0

用strip_tags()是好的,你也可以使用的preg_match()來匹配輸入的電子郵件地址是否實際上是電子郵件地址。我建議你使用trim() [在開始和結束處修整空白處]。

功能form_write($字符串)

{

回報mysql_real_escape_string(TRIM(用strip_tags($字符串)));

}

$名稱= form_write($ _ POST [ '名稱']);

我是新來的,如果你認爲我的回答很好。如果你投票,我將不勝感激。

關注Venkat。