允许从网站外部提交表单可能会带来严重的安全隐患,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; } }