将html表单发布到mysql数据库并避免数据库攻击

问题描述:

我有一个问题需要澄清以最安全的方式将表单数据写入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 

将不胜感激,如果任何人都可以看看,让我知道如果我在正确的轨道上,或者如果存在要这样做更好的方法。

谢谢

是的,剥离标签和转义输入使其安全。稍后,您可以添加一个额外的验证图层来输入变量。例如验证电子邮件,您可以使用:

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

用strip_tags()是好的,你也可以使用的preg_match()来匹配输入的电子邮件地址是否实际上是电子邮件地址。我建议你使用trim() [在开始和结束处修整空白处]。

功能form_write($字符串)

{

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

}

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

我是新来的,如果你认为我的回答很好。如果你投票,我将不胜感激。

关注Venkat。