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]