ASP防止站外、跨域提交

來源:互聯網
上載者:User

<%
from_url=Request.servervariables("http_referer")
serv_url=Request.servervariables("http_host")

if instr(from_url,serv_url)<>0 and instr(from_url,"reg.asp")<>0 then
Response.write "正確!"
else
Response.write "非法提交!"
End if
%>


你寫的
<%
if mid(From_url,8,len(Serv_url))<>Serv_url or instr(from_url,"reg.asp")=0 then
        Response.Write "<script>alert('參數提交錯誤!請勿修改連結!');this.location.href='index.asp';</SCRIPT>"
        Response.End
End if
%>

看紅色部分
我寫的那個判斷條件
1.  instr(from_url,serv_url)<>0   判斷是否同一網域名稱,當網域名稱相同時,返回true
2.  instr(from_url,"reg.asp")<>0 判斷是否從reg.asp提交過來,當是從reg.asp提交過來時,返回true
當1 和 2都成立的時候, true and true=true  提交是正確的,否則就是非法提交了


你寫的那個判斷條件
1. mid(From_url,8,len(Serv_url))<>Serv_ur     判斷是否同一網域名稱,是同一個網域名稱,返回false
2. instr(from_url,"reg.asp")=0                       判斷是否從reg.asp提交過來,是從reg.asp提交過來, 返回false
當 1 成立 或 2成立時,
true or false=true
false or true=true
就是表示提交不正確
只有當1為false 而且 2為false時,才是正確提交



所以說,你寫的代碼沒有錯,邏輯上原理一樣,只是你的代碼非法提交的時候返回true,My Code是正確提交的時候返回true

而這樣寫就是非法提交的時候返回true
if not(instr(from_url,serv_url)<>0 and instr(from_url,"reg.asp")<>0) then
Response.write "非法提交!"
End if

一開始不清楚樓主是否需要在正確提交的時候也要執行代碼,所以就寫成我原來的那種,如果只需要判斷非法提交時才需要執行代碼,用你寫的代碼就OK了,用OR

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.