允许从网站外部提交表单可能会带来严重的安全隐患,ASP和PHP都可以构造POST数据,攻击者可能使用暴力猜解来获得后台管理密码,或者通过SQL注入来得到他没有权限得到的东西,进而获得整个网站的控制权。防SQL注入攻击在此不再叙述,各种方法林林总总。当然也可以使用验证码的方式来避免此类问题,本篇只给出ASP和PHP两个禁止网站外部提交表单的函数。
ASP函数:
Function CheckPageFrom()
Dim host, referer
host = Request.ServerVariables("HTTP_HOST") '网站域名
referer = Request.ServerVariables("HTTP_REFERER") '前一页面URL地址
rleft = Left(Replace(referer, "http://", ""), Len(host))
If Cstr(rleft) <> Cstr(host) Then
response.Write "<script language='javascript'>"
response.Write "alert('禁止从网站外部提交表单!');"
response.Write "location = 'http://www.yourname.com';"
response.Write "</script>"
response.End()
End IF
End Function
PHP函数:
function CheckPageFrom() {
$servername = $_SERVER['SERVER_NAME']; //当前脚本路径
$len = strlen($servername); //脚本路径字符串长度
$pagefrom = $_SERVER["HTTP_REFERER"]; //前一页面URL地址
$checkfrom = substr($pagefrom, 0, $len);
if($checkfrom != $servername) {
echo('<script type="text/javascript">'
.'alert("禁止从网站外部提交表单!");'
.'location="http://www.yourname.com";'
.'</script>');
exit;
}
}