.NET 下的几种可执行文件

在net中,比较常见的几种脚本后戳名有,aspx,ashx,asmx,svc等等。(asp等其实并不是由net程序去处理)

在net程序中所有未预编译的程序最终都会进入BuildManager,System.Web.Compilation.BulidManager负责整站的动态编译。

如果开发者在程序根目录的PrecompiledApp.config中设置了不更新编译内容后,那么最终在BuildManagerGetVPathBuildResultInternal方法中会进行判断,如果用户设置了禁止更新编译内容且此时程序内置变量allowBuildInPrecompile为false(反向为true)。那么就会抛出程序未预编译的异常

1111.png

不同后戳的程序会交给不同的handler进行处理,而这些handler最终都会走向GetVPathBuildResultInternal,来判断程序是否需要编译。

而大多数handler在进入GetVPathBuildResultInternal时。对allowBuildInPrecompile的赋值都是false
222222.png

因此,判断后戳程序是否为可执行程序,只需要跟进其处理的handler,看它最终是否会进入GetVPathBuildResultInternal或者一些其他动态编译方法就可以。

在net.framework框架初始的web.config就定义了一些文件的处理handler。

文件路径:C:\Windows\Microsoft.NET\Framework64\{version}\Config\Web.config

如常见几种文件类型所对应的处理handler

aspx  ->  System.Web.UI.PageHandlerFactory
ashx  ->  System.Web.UI.SimpleHandlerFactory
asmx  ->  System.Web.Script.Services.ScriptHandlerFactory
svc   ->  System.ServiceModel.Activation.HttpHandler

通过初始web.config中可以看到net程序中其实还有很多可执行程序的文件类型。

如比较冷门,且鲜为人知的几种类型:

rem  ->  System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory
soap ->  System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory
xamlx  ->  System.Xaml.Hosting.XamlHttpHandlerFactory

这里主要讲解soap,可见rem和soap的处理handler其实是同一个,在HttpRemotingHandlerFactoryGetHandler方法中,当请求方法为GET且文件真实存在时。会先交由WebServiceHandlerFactory去处理
333333.png
而后续也会调用GetCompiledType方法进入BulidManager对文件内容进行动态编译处理。

4444.png

soap本身实现的是一种远程服务,在写法上,soap和asmx类似。soap需要继承MarshalByRefObject,而asmx则继承WebService

如Demo:

<%@ WebService Language="C#" Class="Test" %>
using System;
using System.Web;
using System.IO;
using System.Web.Services.Protocols;


public class Test : MarshalByRefObject
{
         
    
    [WebMethod(Description="Test")]
    public string Chopper(String name) {
    return name;
    }
}

上传到web根目录就可以直接运行,因为soap格式的处理在net框架的web.config中就已经声明了。除用户自定义了后戳的处理handler或者删掉了不需要使用的handler。在net中默认可以使用.soap后戳的可执行程序
5555.png

在调用上,soap和asmx类似,不过需要有一个地方需要注意,在页面提供测试方法以及测试的具体请求包是不能直接调用的,需要先在x.soap?wsdl中获取到soapAction.然后加入到请求头中。就可正常调用相关方法。
SSSSSA.png

安全防范:

对于一些没有用到的handler可以删除掉.且net2.0没有xamlx.xamlx基本用不到,了解一下就行

本文链接:

https://websecuritys.cn/index.php/archives/488/
1 + 6 =
快来做第一个评论的人吧~