DllSpy

संकलित .NET असेंबलियों को स्कैन करता है ताकि इनपुट सतहों (HTTP एंडपॉइंट, SignalR हब, WCF सेवाएँ, gRPC सेवाएँ, Razor पेज, Blazor घटक, Azure फ़ंक्शन, OData एंडपॉइंट) की खोज की जा सके, प्राधिकरण कॉन्फ़िगरेशन की जाँच की जा सके, और सुरक्षा समस्याओं को चिह्नित किया जा सके — यह सब एप्लिकेशन को चलाए बिना।
एक CLI टूल और PowerShell मॉड्यूल के रूप में उपलब्ध।

स्थापना
CLI
dotnet tool install -g DllSpy
PowerShell
Install-Module -Name DllSpy
उपयोग
CLI
# सभी सतहों की सूची बनाएं
dllspy ./MyApi.dll
# सुरक्षा कमजोरियों के लिए स्कैन करें
dllspy ./MyApi.dll -s
# सतह प्रकार के अनुसार फ़िल्टर करें (HttpEndpoint, SignalRMethod, WcfOperation, GrpcOperation, RazorPage, BlazorComponent, AzureFunction, ODataEndpoint)
dllspy ./MyApi.dll -t HttpEndpoint
# HTTP विधि और वर्ग नाम से फ़िल्टर करें
dllspy ./MyApi.dll -m DELETE -c User*
# केवल प्रमाणित / अनाम सतहें
dllspy ./MyApi.dll --auth
dllspy ./MyApi.dll --anon
# केवल होस्ट (चलने योग्य) असेंबलियों को स्कैन करें, क्लास लाइब्रेरीज़ को छोड़ें
dllspy ./MyApi.dll --host-only
# न्यूनतम गंभीरता के साथ स्कैन करें
dllspy ./MyApi.dll -s --min-severity High
# आउटपुट प्रारूप: तालिका (डिफ़ॉल्ट), tsv, json
dllspy ./MyApi.dll -o json
dllspy ./MyApi.dll -o tsv
JSON + jq
# सभी असुरक्षित रूट्स की सूची
dllspy ./MyApi.dll -o json | jq '[.[] | select(.requiresAuthorization == false) | .displayRoute]'
# प्रकार के अनुसार सतहों की गिनती
dllspy ./MyApi.dll -o json | jq 'group_by(.surfaceType) | map({type: .[0].surfaceType, count: length})'
# सुरक्षा समस्याएँ संक्षिप्त तालिका के रूप में
dllspy ./MyApi.dll -s -o json | jq -r '.[] | [.severity, .surfaceRoute, .title] | @tsv'
PowerShell
# सभी सतहें
Search-DllSpy -Path .\MyApi.dll
# सतह प्रकार के अनुसार फ़िल्टर करें
Search-DllSpy -Path .\MyApi.dll -Type HttpEndpoint
Search-DllSpy -Path .\MyApi.dll -Type SignalRMethod
Search-DllSpy -Path .\MyApi.dll -Type WcfOperation
Search-DllSpy -Path .\MyApi.dll -Type GrpcOperation
Search-DllSpy -Path .\MyApi.dll -Type RazorPage
Search-DllSpy -Path .\MyApi.dll -Type BlazorComponent
Search-DllSpy -Path .\MyApi.dll -Type AzureFunction
Search-DllSpy -Path .\MyApi.dll -Type ODataEndpoint
# HTTP विधि द्वारा फ़िल्टर करें
Search-DllSpy -Path .\MyApi.dll -HttpMethod DELETE
# वर्ग नाम द्वारा फ़िल्टर करें (वाइल्डकार्ड समर्थित)
Search-DllSpy -Path .\MyApi.dll -Class User*
# केवल प्रमाणित / अनाम सतहें
Search-DllSpy -Path .\MyApi.dll -RequiresAuth
Search-DllSpy -Path .\MyApi.dll -AllowAnonymous
# केवल होस्ट (चलने योग्य) असेंबलियों को स्कैन करें, क्लास लाइब्रेरीज़ को छोड़ें
Search-DllSpy -Path .\bin\*.dll -HostOnly
# सुरक्षा समस्याएँ खोजें
Test-DllSpy -Path .\MyApi.dll
# केवल उच्च-गंभीरता वाली समस्याएँ
Test-DllSpy -Path .\MyApi.dll -MinimumSeverity High
# सुरक्षा समस्याओं के लिए केवल होस्ट असेंबलियों को स्कैन करें
Test-DllSpy -Path .\bin\*.dll -HostOnly
# विस्तृत दृश्य
Test-DllSpy -Path .\MyApi.dll | Format-List
समर्थित फ्रेमवर्क
| फ्रेमवर्क | पहचान विधि | सतह प्रकार |
|---|
| ASP.NET Core / Web API | कंट्रोलर बेस क्लास, [ApiController], नामकरण परंपरा | HttpEndpoint |
| SignalR | Hub / Hub<T> इनहेरिटेंस | SignalRMethod |
| WCF | [ServiceContract] इंटरफेस + [OperationContract] मेथड्स | WcfOperation |
| gRPC | BindService के साथ जनरेटेड बेस क्लास | GrpcOperation |
| Razor Pages | PageModel इनहेरिटेंस, On{Verb}[Handler][Async] मेथड्स | RazorPage |
| Blazor | ComponentBase इनहेरिटेंस + [Route] एट्रीब्यूट | BlazorComponent |
| Azure Functions | [FunctionName] / [Function] + [HttpTrigger] पैरामीटर | AzureFunction |
| OData | ODataController इनहेरिटेंस | ODataEndpoint |
सुरक्षा नियम
HTTP एंडपॉइंट
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित स्थिति-परिवर्तन एंडपॉइंट | DELETE, POST, PUT, या PATCH बिना [Authorize] के |
| Medium | प्राधिकरण घोषणा गायब | एंडपॉइंट में न तो [Authorize] है और न ही [AllowAnonymous] |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
SignalR हब मेथड्स
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित हब विधि | हब विधि बिना [Authorize] के (सीधे क्लाइंट द्वारा आह्वान योग्य) |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
WCF ऑपरेशन्स
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित WCF ऑपरेशन | ऑपरेशन बिना [PrincipalPermission] या [Authorize] के |
| Low | बिना भूमिका के Authorize | [PrincipalPermission] मौजूद है लेकिन कोई Role निर्दिष्ट नहीं |
gRPC ऑपरेशन्स
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित gRPC ऑपरेशन | सेवा विधि बिना [Authorize] के |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
Razor पेज हैंडलर्स
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित स्थिति-परिवर्तन हैंडलर | POST, PUT, DELETE, या PATCH हैंडलर बिना [Authorize] के |
| Medium | प्राधिकरण घोषणा गायब | हैंडलर में न तो [Authorize] है और न ही [AllowAnonymous] |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
Blazor रूटेबल कम्पोनेंट्स
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित रूटेबल कम्पोनेंट | [Route] वाला कम्पोनेंट लेकिन [Authorize] के बिना |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
Azure फ़ंक्शन
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित Azure फ़ंक्शन | AuthorizationLevel.Anonymous और कोई [Authorize] एट्रीब्यूट नहीं |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
OData एंडपॉइंट
| गंभीरता | नियम | विवरण |
|---|
| High | अप्रमाणित स्थिति-परिवर्तन एंडपॉइंट | DELETE, POST, PUT, या PATCH बिना [Authorize] के |
| Medium | प्राधिकरण घोषणा गायब | एंडपॉइंट में न तो [Authorize] है और न ही [AllowAnonymous] |
| Low | बिना भूमिका/नीति के Authorize | [Authorize] मौजूद है लेकिन कोई Roles या Policy निर्दिष्ट नहीं |
लाइसेंस
देखें LICENSE.