应用正则表达式验证用户注册信息(下)

    在运行Javascript脚本并通过正则表达式对用户的注册信息进行验证时,虽然可以在客户端对用户输入的信息进行控制,并且还减轻了服务器的压力,但是也带来一些安全隐患。

    如果某个用户利用Javascript是在客户端执行的特点,将网站的注册页面保存到本地,并对这个本地静态HTML文件稍加修改,去掉其中应用Javascript判断输入信息是否合理的部分,并重新设置form表单的提交路径,那么运行本地的静态HTML文件就可以实现用户注册的功能。而此时不会有任何对输入信息的限制,无论输入什么内容都能注册成功。  

    这就是我们所说的越过表单进行文件上传,其主要是利用了Javascript在客户端执行的特点,虽然可以在页面内部限制用户的输入,但是不能限制其他表单对页面的提交。

    而我们这里将介绍一种防护措施,从而可以避免出现这种越过表单上传文件的漏洞,那就是在表单处理页和数据表的字段类型中做文章。

    首先,在表单处理页中通过正则表达式再次对提交的数据进行验证,这一关他是无论如何都躲不过去的。要在表单处理页应用正则表达式对提交的数据进行验证,就应用正则表达式preg_match()。完整代码如下:

function.php:

<?php 
function gtel($gtel){
	$check="/^(\d{3}-)(\d{8})$|^(\d{4}-)(\d{7})$|^(\d{4}-)(\d{8})$/";		//定义验证座机号码的正则表达式
	$bool=preg_match($check,$gtel,$counts);									//应用preg_match验证参数的格式是否正确
	return $bool;															//返回变量值
}
function mtel($mtel){
	$check="/^13(\d{9})$|^15(\d{9})$|^189(\d{8})$/";		//定义验证手机号码的正则表达式
	$bool=preg_match($check,$mtel,$counts);
	return $bool;
}

function email($email){
	$check="/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";		//定义验证email的正则表达式
	$bool=preg_match($check,$email,$counts);
	return $bool;
}
function postalcode($postalcode){
	$check="/\d{6}/";		//定义验证邮编的正则表达式
	$bool=preg_match($check,$postalcode,$counts);
	return $bool;
}

?>	

index.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> 在JavaScript脚本中通过正则表达式验证用户注册信息</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<script src="js/check.js"></script>
<body>
<table width="1014" height="706" border="0" align="center" cellpadding="0" cellspacing="0" background="images/form1.jpg">
  <tr>
    <td width="133" height="228"> </td>
    <td width="750"> </td>
    <td width="113"> </td>
  </tr>
  <tr>
    <td> </td>
    <td align="center" valign="top">
	<form name="form_reg" method="post" action="index_ok.php" onSubmit="return chkreginfo(form_reg,'all&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值