mit großen Schwierigkeiten.
Die beiden größten Probleme in C sind Buffer Overruns und Double-Frees, die es Angreifern ermöglichen, nicht vertrauenswürdigen Code auf Ihrem System auszuführen. Also, Nummer Eins, Code defensiv! Überprüfen Sie immer die Array-Grenzen, verwenden Sie NIEMALS gets und stellen Sie sicher, dass Sie alle Frees visuell mit mallocs übereinstimmen können. In der Tat, wenn Sie können, verwenden Sie einen konservativen GC wie Boehm, so dass Sie überhaupt nicht frei haben müssen. Dann benutze Tools wie Valgrind, um dein Programm zu analysieren und hoffentlich Dinge zu finden, die du vergessen hast.
Dann, da Sie einen Webserver schreiben, können Sie Setuid ausführen (wenn Sie auf einen Port < 1024 hören möchten), die auch sehr gefährlich ist, da es jedem gibt, der in Ihr Programm root einbricht. Führen Sie daher so viel wie möglich Ihres Systems in einem gegabelten Prozess als nicht vertrauenswürdiger Benutzer aus. Dies ist die nächste Sicherheitsebene, die Sie hoffentlich schützt, selbst wenn Ihr Programm einen Exploit hat (was es auch tun wird).
Testen Sie auch Test! Eine wichtige Art der Sicherheitsüberprüfung ist das "Fuzz Testing" - senden Sie zufällige Eingaben an Ihr Programm und sehen Sie, was passiert. Wenn Ihr Programm jemals die Werte für "segment" ändert, haben Sie möglicherweise einen ausnutzbaren Fehler.
Dies ist ein ginormous Thema. SO ist für kleine spezifische Fragen gedacht. –
Was ist mit den vorhandenen Webservern falsch? – Joni
Die Frage ist kurz, das ist gut, aber im Stackoverflow-Format schwer zu beantworten, weil es nicht sehr fokussiert ist. – thb