ASP怎樣防止外部提交(站外提交)的函數(shù)-Http_Referer
ASP防止外部提交?ASP怎么防止站外提交數(shù)據(jù)函數(shù)?
首先,我們先知道HTTP_Referer最常用的應(yīng)用就是能夠防止外部(站外)提交。
下列情況是從瀏覽器的地址欄正常取得Request.ServerVariables("HTTP_REFERER"):
1) 直接用<a href="">
2) 用Submit或<input type="image">提交的表單(POST或GET)
3) 使用JavaScript提交的表單(POST或GET)
下面我們?cè)倏纯碦equest.ServerVariables("HTTP_REFERER")不能正常取值的情況:
1) 從收藏夾鏈接
2) 單擊主頁(yè)或自定義的地址
3) 在瀏覽器中直接輸?shù)刂?br />4) 使用JavaScript的Location.href或者是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">轉(zhuǎn)向
7) 用XML加載地址
顯然,Request.ServerVariables("HTTP_REFERER")在多數(shù)情況下是不能正常工作的。關(guān)于它的具體用法我會(huì)在以后的文章中詳細(xì)的介紹,同時(shí)還會(huì)介紹Request.ServerVariables("HTTP_HOST")Request.ServerVariables("SERVER_NAME")之間的區(qū)別。
敬請(qǐng)關(guān)注!
Request.ServerVariables里Server_Name與Http_Host之間有什么區(qū)別呢?
如果不仔細(xì)看,您應(yīng)該看不出它們之間的區(qū)別。Http_Host可以Request出非80的Server_Port,簡(jiǎn)單地說(shuō)就是,Http_Host=Server_Name:Server_Port 例如:http://www.320999.cn:81
在以前發(fā)表過(guò)關(guān)于Http_Referer作用的文章,現(xiàn)在結(jié)合它來(lái)寫一個(gè)ASP防止外部提交的函數(shù)
function ChkPost()
dim server_v1,server_v2
chkpost=false
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
If Mid(server_v1,8,Len(server_v2))<>server_v2 then
chkpost=False
else
chkpost=True
end If
end function