Diese Diskussion wurde archiviert.
Es können keine neuen Kommentare abgegeben werden.
|
|
|
 |
|
 |
 |
|
 |
 |
 |
>Waer das nicht eher eine Analyse, warum IIS unsicherer als Apache ist?
Stimmt. Allerdings hat Stiennon seinen Artikel selbst so überschrieben.
>Wie steht es mit Apache unter Windows aus?
Würde mich auch mal interessieren.
|
|
 |
 |
|
|
 |
|
 |
 |
|
 |
 |
 |
Wie kann man nur die Sicherheit eines Betriebsystems auf den Webserverdienst reduzieren? Schwach.
|
|
 |
 |
|
 |
|
 |
 |
Von Anonymer Feigling am Saturday 06. May 2006, 17:48 MEW (#5)
|
|
 |
 |
 |
Der Spruch wird auch nicht richtiger, wenn man ihn
oft genug wiederholt. Gegenbeweis: Man fotografiere
ein Wort. Sagt dieses Foto jetzt mehr aus als das Wort? Bilder sagen gar nichts, sie reden nur. Viele - wenn nicht sogar die meisten - Bilder lügen, in dem Sinne das sie dem Betrachter einen Eindruck aufdrängen oder nahelegen, der nicht den objektiven Fakten entspricht. Bilder sind perfekt um abzulenken und für Propaganda, weil der Mensch, ganz besonders der moderne ein Augentier ist. Wenn man etwas einigermaßen klar und deutlich ausdrücken möchte, dann nimmt man besser tausend Worte als ein Bild. Es könnte ja auch sein, dass man das Bild nur vorschiebt, weil man keine echten Argumente hat.
Man müsste schon den Code sehen, um Apache und IIS fair zu vergleichen und den Code bezüglich der Fehleranfälligkeit und Wohlstruktiertheit beurteilen zu können. Die Performanz kann man auch ohne Code gut vergleichen. Nicht offentsichtliche Schwächen findet man eventuell nur durch Code-Inspektion, weil gewisse Fälle in der Realität
nicht vorkommen.
Unix hat eine recht kleine System-API, die wenig spezialisiert und dafür eher objekt-orientiert - lange bevor man meinte für OO bräuchte man dedizierte Sprachen. Bestes Beispiel sind read() und write(), die sich nicht darum scheren, ob der "file descriptor" einen Socket, eine reguläre Datei oder was auch immer darstellt. Die Windows-API mag hier unschöner sein, sie mag aber auch auf die spezifischen Eigenschaften der Objekte stärker eingehen, was sich in der Theorie für Optimierungen nutzen ließe. Windows hat ganz einfach eine andere Weltanschauung. Unter Windows sind Threads selbstverständlich, unter Unix - zumindest in C und C++ eher ein PITA. Threads sind aber sehr oft unnötig und werden nur aus Faulheit genutzt. Zudem
haben auch Threads immer noch Overhead wie "context switches" und "locking". Die Komplexität des Codes
steigt durch Threads in der Regel stark.
Interessanterweise ist simple Server-Software ist vielen Fällen weit fehleranfälliger als die großen Varianten und wenn sie keine größeren Patzer enthalten ignorieren sie oft die halbe Spezifikation. Man möge mir einen "Mini-Webserver" zeigen, der RFC-konform ist, d.h. die Mindestanforderungen erfüllt. Einen einfachen Webserver kann im Prinzip jeder Idiot schreiben und das ist ja auch der Fall. Einen Webserver zu schreiben, der keine "buffer overflows", sowie sonstige Bugs enthält und einigermaßen performant ist, ist nicht sehr viel schwieriger, aber in der Realität schon seltener anzutreffen. Für einen performanten Server kommt man um epoll und kqueue nicht herum. Da kommen dann schon einige System-Calls dazu. Einige Aufrufe von setsocketopt() braucht man ebenfalls. Unter Unix ist letzteres immer genau ein System-Call. Unter Windows mag jedes Feature seinen eigenen System-Call haben. Das wäre aber weder komplexer noch gefährlicher, sondern einfach nur anders.
Außer read() und write() braucht eventuell aber auch readv() und writev(), wobei erstere eigentlich überflüssig sind, da sie nur Spezialfälle von letzteren sind. Unter Umständen braucht man gar recvmsg() und sendmsg(). Also noch mehr System-Calls. Möglicherweise übersetzt die libc alle diese Varianten aber auch in eine generische Variante. Nicht alles was als System-Call deklariert ist, ist auf Kernel-Ebene wirklich ein unterschiedlicher System-Call.
Unter Linux braucht man sogar dummerweise ein fcntl(fd, F_SETFL, flags | O_NONBLOCK) für jeden Socket den man per accept() erhält, weil unter Linux dieses "flag" nicht vom "listening" Socket geerbt wird. Macht das Linux jetzt unsicherer als BSD? Ich glaube es nicht.
Letztlich muss man schon Apache zuzüglich aller gewöhnlichen Module mit IIS vergleichen. Nicht selten, wird eine Software es durch solche Zusatzmodule fehleranfällig. Man möge ganz einfach mal die Zusätze für Firefox unter die Lupe nehmen.
Es ist ein leichtes Firefox per Plug-In gefährlicher als jeden IE zu machen.
Man kann nicht davon ausgehen, dass die hohen die Standards, die (hoffentlich) für die Entwickler der Basis-Software gelten, auch von den Autoren der Zusatzmodule beachtet werden.
|
|
 |
 |
|
| |
 |
|
 |
 |
Von Anonymer Feigling am Sunday 07. May 2006, 01:37 MEW (#7)
|
|
 |
 |
 |
Die beiden Entwickler-Teams sollten einfach mal ihre UML-Diagramme vorzeigen.
Vorsicht, Sarkusmus.
|
|
 |
 |
|
|