处理 SSI 文件时出错
Request.ServerVariables的值与防盗链  Request.ServerVariables的值与防盗链2006-12-14 17:47:09Request.ServerVariables的值与防盗链2006-12-14 17:47:09Request.ServerVariables的值与防盗链
本机ip:<%=request.servervariables("remote_addr")%> 服务器名:<%=Request.ServerVariables("SERVER_NAME")%> 服务器IP:<%=Request.ServerVariables("LOCAL_ADDR")%> 服务器端口:<%=Request.ServerVariables("SERVER_PORT")%> 服务器时间:<%=now%> IIS版本:<%=Request.ServerVariables("SERVER_SOFTWARE")%> 脚本超时时间:<%=Server.ScriptTimeout%> 本文件路径:<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%> 服务器CPU数量:<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%> 服务器解译引擎:<%=ScriptEngine & "/"& ScriptEngineMajorVersion&"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %> 服务器操作系统:<%=Request.ServerVariables("OS")%> 支持的文件类型:<%=Request.ServerVariables("HTTP_Accept")%> 访问的文件路径:<%=Request.ServerVariables("HTTP_url")%> 用户代理的信息:<%=Request.ServerVariables("HTTP_USER_AGENT")%> 获取url中的文件名和传过来的值:request.ServerVariables("script_name")+"?"+request.ServerVariableS("QUERY_STRING")
其中ServerVariables就是服务器的环境变量了,该变量包含的内容比较多,我们同样先采用for循环进行遍历查看下。 <%for each i in request.servervariables%> <%=i%>: <%=request.servervariables(i)%> <hr> <%Next%>
Request.ServerVariables("HTTP_REFERER")的工作方式
下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的: 1.直接用<a href> 2.用Submit或<input type=image>提交的表单(POST or GET) 3.使用Jscript提交的表单(POST or GET)
下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 1.从收藏夹链接 2.单击''主页''或者自定义的地址 3.利用Jscript的location.href or location.replace() 4.在浏览器直接输入地址 5.<%Response.Redirect%> 6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向 7.用XML加载地址
显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的
ALL_HTTP客户端发送的所有HTTP标题文件。 ALL_RAW检索未处理表格中所有的标题。 APPL_MD_PATH检索ISAPIDLL的(WAM)Application的元数据库路径。 APPL_PHYSICAL_PATH检索与元数据库路径相应的物理路径。IIS通过将APPL_MD_PATH转换为物理(目录)路径以返回值。 AUTH_PASSWORD该值输入到客户端的鉴定对话中。只有使用基本鉴定时,该变量才可用。 AUTH_TYPE这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。 AUTH_USER未被鉴定的用户名。 CERT_COOKIE客户端验证的唯一ID,以字符串方式返回。可作为整个客户端验证的签字。 CERT_FLAGS如有客户端验证,则bit0为1。如果客户端验证的验证人无效(不在服务器承认的CA列表中),bit1被设置为1. CERT_ISSUER用户验证中的颁布者字段(O=MS,OU=IAS,CN=username,C=USA)。 CERT_KEYSIZE安全套接字层连接关键字的位数,如128。 CERT_SECRETKEYSIZE服务器验证私人关键字的位数。如1024。 CERT_SERIALNUMBER用户验证的序列号字段。 CERT_SERVER_ISSUER服务器验证的颁发者字段。 CERT_SERVER_SUBJECT服务器验证的主字段。 CERT_SUBJECT客户端验证的主字段。 CONTENT_LENGTH客户端发出内容的长度。 CONTENT_TYPE内容的数据类型。同附加信息的查询一起使用,如:HTTP查询GET、POST和PUT。 GATEWAY_INTERFACE服务器使用的CGI规格的修订。格式为CGI/revision。 LOGON_USER用户登录WindowsNT®的帐号。 PATH_INFO客户端提供的额外路径信息。可以使用这些虚拟路径和PATH_INFO服务器变量访问脚本。如果该信息来自URL,在到达CGI脚本前就已经由服务器解码了。 PATH_TRANSLATEDPATH_INFO转换后的版本,该变量获取路径并进行必要的由虚拟至物理的映射。 QUERY_STRING查询HTTP请求中问号(?)后的信息。 REMOTE_ADDR发出请求的远程主机的IP地址。 REMOTE_HOST发出请求的主机名称。如果服务器无此信息,它将设置为空的MOTE_ADDR变量。 REMOTE_USER用户发送的未映射的用户名字符串。该名称是用户实际发送的名称,与服务器上验证过滤器修改过后的名称相对。 REQUEST_METHOD该方法用于提出请求。相当于用于HTTP的GET/HEAD/POST等等。 SCRIPT_NAME执行脚本的虚拟路径。用于自引用的URL。 SERVER_NAME出现在自引用UAL中的服务器主机名、DNS化名或IP地址。 SERVER_PORT发送请求的端口号。 SERVER_PORT_SECURE包含0或1的字符串。如果安全端口处理了请求,则为1,否则为0。 SERVER_PROTOCOL请求信息协议的名称和修订。格式为protocol/revision。 SERVER_SOFTWARE应答请求并运行网关的服务器软件的名称和版本。格式为name/version。
被发现隐起的 Request.ServerVariables("NUMBER_OF_PROCESSORS") Request.ServerVariables("OS") Request.ServerVariables("WINDIR") Request.ServerVariables("TEMP") Request.ServerVariables("TMP") Request.ServerVariables("ComSpec") Request.ServerVariables("Os2LibPath") Request.ServerVariables("Path") Request.ServerVariables("PATHEXT") Request.ServerVariables("PROCESSOR_ARCHITECTURE") Request.ServerVariables("PROCESSOR_IDENTIFIER") Request.ServerVariables("PROCESSOR_LEVEL") Request.ServerVariables("PROCESSOR_REVISION")
Request.ServerVariables("HTTP_X_FORWARDED_FOR") 是可以获得位于代理(网关)后面的直接IP,当然必须这个代理支持
防盗链的一些做法
Request.ServerVariables("HTTP_REFERER") 用来获取(从哪个页面转到当前页面的) & 路径 常用来转到某一网址 response.redirect Request.ServerVariables("HTTP_REFERER") 用来判断是不是从某个网址链接过来的也一错,可以防址盗链 下面判断是不是从主面进来,
server_vv=len(Request.ServerVariables("SERVER_NAME"))'取得WWW名,不好说大概就是这个意思 server_v1=left(Cstr(Request.ServerVariables("HTTP_REFERER")),server_vv)'取得本页路径的主HTTP server_v2=left(Cstr("http://"&Request.ServerVariables("SERVER_NAME")),server_vv)取得带HTTP名 if server_v1<>server_v2 and server_v1<>"" and server_v2<>"" then response.write("<script>alert('错误:禁止从站点外部提交数据!.')</script>") response.end
sServerName = LCase(Request.ServerVariables("SERVER_NAME")) sReferrerpage = LCase(Request.ServerVariables("HTTP_REFERER")) '//盗链检测 If InStr(sReferrerPage,sServerName)<1 then Response.Redirect("/Error.asp?IllegalLink") End If
Request.ServerVariables的值与防盗链  Request.ServerVariables的值与防盗链2006-12-14 17:47:09Request.ServerVariables的值与防盗链2006-12-14 17:47:09Request.ServerVariables的值与防盗链
|