457475451 发表于 2018-12-22 09:58:13

HttpHandler的一个应用,aspx站点伪装为php站点

  很简单的小应用,通过httphandler,把后缀名是.php的请求交给指定的Httphandler处理即可。
  首先要做的是在web.config配置好。
  
  
  
  httpHandlers结点是在system.web结点下的。
  常规配置如上,verb指定是post还是get,path的作用类似于限制请求的路径,比如上面,只要请求是php后缀名的,才能由此httpHandler处理。
  type就是指定处理该请求的dll模块,或者类型。本例中就是FakePHP.JustFakeIt这个类,此类实现了IHttpHandler接口。该节点详细说明参考
  http://msdn.microsoft.com/en-us/library/aa903367(v=vs.71).aspx
  剩下的事情,就是要实现这个处理请求,创建FakePHP.JustFakeIt这样一个类型,然后编码。


[*]using System.Web;
[*]using System.IO;
[*]using System.Net;
[*]
[*]namespace FakePHP
[*]{
[*]    ///   
[*]    /// JustFakeIt 的摘要说明
[*]    ///   
[*]    public class JustFakeIt : IHttpHandler
[*]    {
[*]
[*]      public void Proce***equest(HttpContext context)
[*]      {
[*]            context.Response.ContentType = "TEXT/HTML";
[*]            string page = context.Request.Path;
[*]
[*]            WebRequest mywebReq;
[*]            WebResponse mywebResp;
[*]            StreamReader sr;
[*]            string strHTML;
[*]
[*]            mywebReq = WebRequest.Create(HttpContext.Current.Request.Url.OriginalString.Replace(context.Request.Path, "/default.aspx"));
[*]            mywebResp = mywebReq.GetResponse();
[*]            sr = new StreamReader(mywebResp.GetResponseStream());
[*]            strHTML = sr.ReadToEnd();
[*]
[*]            context.Response.Write(strHTML);
[*]      }
[*]
[*]      public bool IsReusable
[*]      {
[*]            get
[*]            {
[*]                return false;
[*]            }
[*]      }
[*]    }
[*]}

  然后运行,加上输入url,请求为任意一个php文件。比如a.php,http://localhost:26962/a.php
  那么就可以得到真实的default.aspx的内容了。
  以上只是HttpHandler的一个小应用示例,通过这种方法,可以实现一些特殊需求。


附件:http://down.运维网.com/data/2361572

页: [1]
查看完整版本: HttpHandler的一个应用,aspx站点伪装为php站点