将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_var和list of filters。
答
是用strip_tags()是好的,你也可以使用的preg_match()来匹配输入的电子邮件地址是否实际上是电子邮件地址。我建议你使用trim() [在开始和结束处修整空白处]。
功能form_write($字符串)
{
回报mysql_real_escape_string(TRIM(用strip_tags($字符串)));
}
$名称= form_write($ _ POST [ '名称']);
我是新来的,如果你认为我的回答很好。如果你投票,我将不胜感激。
关注Venkat。
感谢您的额外信息。我没有使用异常来验证 - 只是我自己的PHP代码。我会检查出来 – 2012-03-12 17:31:32
好了,这个片段中的重要部分是验证输入的filter_var()函数。异常只是引发错误的一种方式。 – 2012-03-12 17:36:18
没错,谢谢你指出 – 2012-03-12 18:21:54