Frage

Gibt es Sicherheitsprobleme, die .NET PDB-Dateien auf dem realen Server zu halten?

Ich weiß, dass Ausnahmen werfen etwas länger könnte dauern, aber die ohnehin Ausnahmen während der normalen Ausführung wirft? :-)

Aber aus Sicht der Sicherheit? irgendwelche Probleme?

War es hilfreich?

Lösung

Hmm - ich auf der Seite der Sicherheit Vorsicht auf dieser anlehnen würde. Ich denke, Sie sollten PDBs haben, aber nicht auf Produktionsservern. Außerdem sollten Sie Debug haben auf jedem Live-System ausgeschaltet. Debug ist böse, und man es einfach nicht wollen, wenn Sie es nicht brauchen.

Scott Guthrie :

  1. Die Erstellung von ASP.NET-Seiten dauert länger (da einige Batch-Optimierungen sind deaktiviert)
  2. Der Code kann langsamer ausführen (da einige zusätzliche Debug-Pfade aktiviert)
  3. Viel mehr Speicher innerhalb der Anwendung zur Laufzeit verwendet wird
  4. Scripts und Bilder aus dem WebResources.axd Handler heruntergeladen werden nicht zwischengespeichert

Set Deployment Einzelhandel = true in Ihrem machine.config:

<configuration>
    <system.web>
          <deployment retail="true"/>
    </system.web>
</configuration>

Dies überschreibt debug, Fehler- und Trace-Einstellungen, die einen Fehler Offenlegung selbst außerhalb des Computers verhindern.

So, jetzt, dass Sie Debug ausgeschaltet haben, keine Fehler oder Spuren auf, warum sollten Sie HVE der auf dem Produktionsserver bereitstellen? Lagern Sie sie woanders, vielleicht sogar Ihre Entwicklungsserver. Ihr Code Promotion-Skript von Dev Produktion kann speziell auf die PDBs ausschließen, aber sie archiviert, so dass sie verfügbar sind, wenn Sie jemals das Debuggen von Produktion müssen tun.

Andere Tipps

Wenn Ihr System nicht mit dem PDBs sichert, ist es wahrscheinlich nicht, ohne sie zu sichern. Offensichtlich hängt es, wie wertvoll die besseren Fehlerberichte an Sie sind. Persönlich schätze ich, dass eine Menge, so neigen die PDBs einzusetzen.

ich glaube, ein gutes Argument ist auch, dass nicht die PDBs verlassen auf den Live-Servern ein Risiko ist. In dem Fall, wo die Produktion abstürzt und die Probleme nicht auf dev oder UAT reproduziert werden, ist es viel mehr Zeit (und vielleicht unmöglich) zu diagnostizieren, wo der Fehler auftritt.

Am allerwenigsten die PDBs, die die bereitgestellten DLLs übereinstimmen sollte irgendwo auf dem Produktionsserver in einer ZIP-Datei sein. Sie sollten leicht von anderen Menschen als sich selbst für den Fall angeordnet werden um Sie herum sind nicht zu unterstützen.

Siehe auch PDB-Dateien. Was muss jeder Entwickler von John Robbins kennen

Das einzige Problem auftreten können, wenn PDB-Dateien auf Ihre Website zu veröffentlichen ist, wenn eine Ausnahme auftritt, und Sie haben vergessen, die Custom Eigenschaft in web.config einzustellen. Der Stack-Trace wird mit dem Dateinamen und Zeilennummern angezeigt werden, was ein Sicherheitsproblem sein kann.

Ich glaube nicht, gibt es andere Risiken.

Wenn der Server IIS ist, nein. Diese Dateien werden nicht in die Öffentlichkeit ausgesetzt werden, wenn an den richtigen Stellen (Website \ ist) gehalten. Gelegentlich habe ich Zwischen (obj-Verzeichnis) Dateien auf Webservern gefunden - dies scheint ein beliebter Weg, um versehentlich Binärdateien zu veröffentlichen. Fälle, in denen Ihr PDBS sichtbar sind, Sie dlls sind ebenfalls sichtbar, was schlimmer ist.

Wie activa erwähnt, ist der Stack-Trace ist viel nützlich, um einen Hacker mit oder ohne Zeilennummern. Halten Sie es privat.

Ich nehme an anderes Programm, das Sie auf einem realen Server ausgeführt werden könnten - Dienstleistungen und so weiter - ist überhaupt nicht öffentlich zugänglich.

Wenn Sie andernfalls Ausnahmen vom Endbenutzer präsentieren (aka in Yellow Screen of Death), dann könnte es ein Risiko von Angreifern stellt einen immer besserer Einblick in Ihr System.

Eine der möglichen Lösungen - eine Ausnahmebehandlung Politik haben , dass:

  1. Protokolliert alle Ausnahmen mit dem Original-Stack-Trace, zusätzliche Informationen und eine einzigartige Ausnahme ID (GUID).
  2. Ersetzt gefeuert Ausnahme mit einem Wrapper, die einzige Ausnahme ID enthält (als Referenz und Feedback) und hygienisiert Nachricht (d.h .: keine Verbindungszeichenfolgen) mit weggeworfenen Stack Trace-Info.

Beispiele für Open-Source-Ausnahmebehandlung Blöcke in .NET:

Im Grunde PDBs ist nur unter Quellcode, wenn es darum geht, Stossen über, und ASP.NET/IIS stoppt sie nicht von entweder heruntergeladen werden.

Jetzt sicher, die Menschen würden die Montage Namen zu erraten haben, und dass es unwahrscheinlich ist, aber warum das Risiko eingehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top