四种表单验证方法的分析和比较
2010-01-14 00:00:00 来源:WEB开发网核心提示: 从图 1 可以看出这种表单验证方法有一个致命的缺点,很多工具可以在表单检验过后、浏览器发送请求前截取表单数据,四种表单验证方法的分析和比较(2),攻击者可以修改请求中的数据,从而绕过 JavaScript,checkusername() 和 checkpassword() 是 PHP 语言 编写
从图 1 可以看出这种表单验证方法有一个致命的缺点,很多工具可以在表单检验过后、浏览器发送请求前截取表单数据,攻击者可以修改请求中的数据,从而绕过 JavaScript,将恶意数据注入服务器,这样会增加 XSS(全称 Cross Site Scripting)攻击的机率。对于一般的网站,都不赞成采用浏览器端的表单验证方法。
浏览器端和服务器端双重验证
浏览器端和服务器端双重验证方法在浏览器端验证方法基础上增加服务器端的验证,其原理如图 2 所示,该方法增加服务器端的验证,弥补了传统浏览器端验证的缺点。若表单输入不符合要求,浏览器端的 Javascript 验证能很快地给出响应,而服务器端的验证则可以防止恶意用户绕过 Javascript 验证,保证最终数据的准确性。
图 2. 浏览器端和服务器端双重验证原理图
除了客户端 Javascript 验证,该方法增加了服务器端的 PHP 验证,示例代码如清单 2 所示,checkusername() 和 checkpassword() 是 PHP 语言 编写的两个验证接口函数,根据 $error 结果,确定表单的有效性。
清单 2. 服务器端表单的 PHP 验证 if(isset($_POST['username']))
{
$usermsg = checkusername($_POST['username']);
if($usermsg != '')
$error = true;
if(isset($_POST['pass']))
{
$passmsg = checkpassword($_POST['pass']);
if($passmsg != '')
$error = true;
}
}
更多精彩
赞助商链接