Ich habe einen MVC.NET 4-Webserver, der eine HTTP-POST-Anforderung mit einer JSON-formatierten Zeichenfolge als Anforderungsdaten akzeptiert. Ich möchte eine Regel in der IIS-Ebene hinzufügen, bevor die Anfrage den Server trifft, um die Anfrage von einigen Regex auf diese JSON-Zeichenfolge zu blockieren. Ist das möglich?IIS 8-Blockanforderung von JSON-Nutzdatenfeldern
Antwort
sehen Ich denke, Erstellen und Hinzufügen eines benutzerdefinierten Http Module kann Ihr Problem lösen. Ein HTTP-Modul wird bei jeder Anforderung als Reaktion auf die Ereignisse BeginRequest
und EndRequest
aufgerufen.
danke - Ich bin tatsächlich auf der Suche nach einer Möglichkeit, dies auf der IIS-Ebene zu blockieren, nicht der Webserver. Führt das BeginRequest-Ereignis das aus? – Orr
Wenn Sie sagen, IIS-Ebene .. Haben Sie gemeint, Blockierung nur für eine bestimmte Website zu implementieren? –
http://www.iis.net/configreference/system.webserver/modules Oder verwenden Sie http://www.iis.net/learn/extensions/url-rewrite-module/request-blocking-rule-template –
Da Sie sagt:
ich es in der IIS-Ebene für ungültig zu erklären mehr Belastung der im Web Serverebene sein will eine anderen Thread für jede Anforderung erstellen zu müssen. Der Grund, warum ich möchte einige Anfrage blockieren ist, dass sie zu meine App nicht mehr relevant sind, die kommen in hoher Last und ich kann sie nicht von der Kunden Seite stoppen
Sie haben zwei Möglichkeiten:
- Request Filtering
- URL Rewriting
Bitte studieren Sie die IIS 7.0 Request Filtering and URL Rewriting Artikel sorgfältig kno w die wichtigsten Dinge über sie. Wenn Ihre Auswahl die erste mit der höchsten Priorität wäre, wäre die <denyQueryStringSequences>
nützlich, wenn sie einige Filteranforderungen abdeckt. Und für die Arbeit mit Regex, müssen Sie die zweite verwenden. die folgende Beispielregel kann die Bearbeitung des Antrags unter dem <rewrite>
stoppen:
<rule name="Block Bad Request Strings" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="id=([^\"]*[^-]?>)|(?:[^\\w\\s]\\s*\\\/>)|(?:>\") />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission" />
</rule>
Weitere Informationen URL Rewrite Module Configuration Reference
- 1. Aggregation von IIS-Protokollen
- 2. Upload-Geschwindigkeitssteuerung von IIS?
- 3. Langsame Antwortzeiten von IIS
- 4. Abrufen von IIS-Arbeitsprozessabstürzen
- 5. C# MVC Fehlerbehandlung von IIS Express und IIS 7.5
- 6. IIS Express von der Befehlszeile
- 7. Registrieren von ASP.NET in IIS
- 8. Automatisierung der Installation von IIS
- 9. Auflisten von Anwendungspools in IIS
- 10. Installiere IIS von C# -Code
- 11. IIS: Odd Verhalten von Modulen
- 12. Suchen von Version von IIS mit Powershell
- 13. IIS Hinzufügen von URL anstelle von IP
- 14. IIS/Azure IIS - maximale Reaktionszeit einschränken
- 15. php_printer.dll & IIS
- 16. IIS-Skalierbarkeit
- 17. Entwicklungscomputer IIS-Version vs. Bereitstellung IIS-Version
- 18. IIS stackoverflow
- 19. So verwalten Sie IIS von der Webseite
- 20. Installieren von ASP.Net 2.0 nach IIS
- 21. Entfernen Sie index.php von Codeigniter auf IIS?
- 22. Programmgesteuertes Importieren von Cert in IIS?
- 23. Bereitstellen von WCF auf IIS 8.5
- 24. Abrufen von IIS 6.0-Zertifikatsinformationen in .NET
- 25. Ausführen von Python & Django auf IIS
- 26. Konfigurieren von SMTP in IIS 7?
- 27. IIS 7 httpruntime maxRequestLength Limit von 2097151
- 28. Einrichten von ASP.NET-Seiten unter IIS 6
- 29. Gewähren von Zugriff auf IIS 7.5 Application
- 30. Ausführen von SVN-Repositorys unter IIS
** um Anfrage durch einige Regex auf dieser JSON-Zeichenfolge zu blockieren ** Bitte erläutern Sie, was Sie damit meinen ... –
@DaveAlperovich Die Anfrage hat einen JSON-formatierten String-Körper. Wenn diese Zeichenfolge mit einem Regex übereinstimmt, wird die Anfrage abgebrochen. Auf dieselbe Weise können Sie die Abfrage-URL einer Regex zuordnen. – Orr
Verwenden Sie OWIN? Oder können Sie das HttpApplication.BeginRequest-Ereignis verwenden? Können Sie bitte erläutern, warum es auf IIS-Ebene sein muss? – milanio