请问,PHP提交表单,如果验证提交的数据?不让别有用心的人作为攻击对象。
我的验证代码如下:
//自定义报错函数,出现错误返回并终止程序执行
function error($msg){
echo "<script>alert('".$msg."');history.go(-1);</script>";
exit();
}
//邮箱地址注入换行漏洞
function spamcheck($field){
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
if(filter_var($field, FILTER_VALIDATE_EMAIL)){
return TRUE;
}
else{
return FALSE;
}
}
//提交数据
$username=trim($_POST["username"]);
$pose=trim($_POST["pose"]);
$company=trim($_POST["company"]);
$address=trim($_POST["address"]);
$telephone=trim($_POST["telephone"]);
$email=trim($_POST["email"]);
$content=trim($_POST["content"]);
if($username!="" && $content!="" && $company!="" && $telephone!="" && $email!=""){
//验证用户名的长度
if(strlen($username)>10) {
error("用户名长度应小于10!");
}
//验证邮箱名称的有效性
if (isset($email)){
$mailcheck = spamcheck($email);
if ($mailcheck==FALSE){
error("邮箱地址输入错误");
}
}
}
else{
echo "<script>alert('您留下的信息不完整!');history.go(-1);</script>";
exit();
}请大家帮忙看看,还有什么要补充的地方,或者有新的建议吗?谢谢了。
我的验证代码如下:
//自定义报错函数,出现错误返回并终止程序执行
function error($msg){
echo "<script>alert('".$msg."');history.go(-1);</script>";
exit();
}
//邮箱地址注入换行漏洞
function spamcheck($field){
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
if(filter_var($field, FILTER_VALIDATE_EMAIL)){
return TRUE;
}
else{
return FALSE;
}
}
//提交数据
$username=trim($_POST["username"]);
$pose=trim($_POST["pose"]);
$company=trim($_POST["company"]);
$address=trim($_POST["address"]);
$telephone=trim($_POST["telephone"]);
$email=trim($_POST["email"]);
$content=trim($_POST["content"]);
if($username!="" && $content!="" && $company!="" && $telephone!="" && $email!=""){
//验证用户名的长度
if(strlen($username)>10) {
error("用户名长度应小于10!");
}
//验证邮箱名称的有效性
if (isset($email)){
$mailcheck = spamcheck($email);
if ($mailcheck==FALSE){
error("邮箱地址输入错误");
}
}
}
else{
echo "<script>alert('您留下的信息不完整!');history.go(-1);</script>";
exit();
}请大家帮忙看看,还有什么要补充的地方,或者有新的建议吗?谢谢了。
$username=htmlspecialchars(trim($_POST["username"]));
$pose=htmlspecialchars(trim($_POST["pose"]));
$company=htmlspecialchars(trim($_POST["company"]));
$address=htmlspecialchars(trim($_POST["address"]));
$telephone=htmlspecialchars(trim($_POST["telephone"]));
$email=trim($_POST["email"]);
$content=htmlspecialchars(stripslashes(trim($_POST["content"])));
这样可以了吗?电子邮件那个已加了验证的办法。
数值型的强制转成数字
非数值型的过来单引号
$pose=addslashes(htmlspecialchars(trim($_POST["pose"])));
$company=addslashes(htmlspecialchars(trim($_POST["company"])));
$address=addslashes(htmlspecialchars(trim($_POST["address"])));
$telephone=addslashes(htmlspecialchars(trim($_POST["telephone"])));
$email=trim($_POST["email"]);
$content=addslashes(htmlspecialchars(stripslashes(trim($_POST["content"]))));
这样可以吗?