Hi zusammen
Ich will eigentlich schon länger mich mit
CGI (common-gateway-interface, nicht computer-generated-image !) beschäftigen.
Allerdings scheiterst bereits bei einem kleinen Hallo-Welt, beziehungsweise meinem Webhoster. Webhoster ist auf Suse und Apache, ich habe ein kleines CGI-Programm in C++ geschrieben, auf Ubuntu kompiliert und auch problemslos laufen lassen können.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <iostream>
using namespace std;
int main()
{
cout << "Content-type: text/html" << endl; // Diese Ausgabe muss jedes
cout << endl; // CGI-Programm als erstes erzeugen
cout << "<html><head><title>HUI!</title></head><body><p>blablablabla</p></body></html>";
return 0;
}
|
Auf dem Webserver gabs immer nur nen 500 Fehler, ungültiger Content-Type. Bei mir lokal auf Ubuntu und Apache keine Probleme.
Nach langem hin- und her hat der Support des Webhosters meine Vermutung bestätigt dass es an deren Sicherheitseinstellungen liegt, dass das Programm gar nicht bis zur Ausgabe des Content-Types kommt und dass meine Deklaration nicht ungültig ist.
Also das Problem liegt daran, dass Sie aus sicherheitsgründen nicht auf die
entsprechenden Libraries zugreifen können um das Script auszuführen. Diese
Sicherheitsrichtlinie schützt davor, dass 3. Personen oder Angreifer, über
unsauber programmierten Scripte und Applikationen nicht X-Beliebige
Anwendungen auf dem Server starten können. Leider kann ich diese
Einschränkung nicht lockern, da ansonsten der Serverbetrieb beeinträchtigt
werden könnte.
Ich verstehe nicht warum das Ausgeben einer gewöhnlichen "Hallo
Welt"-Meldung nicht möglich ist, CGI wurde doch dafür entwickelt
Programme in einem sicheren Kontext (Sandbox/Softwarefirewall)
auszuführen. Für eine stdout-Ausgabemeldung sollten eigentlich nicht
soviele Berechtigungen notwenig sein, schon gar keine die Zugriff
auf das System ermöglichen meiner Meinung nach, aber so detailiert
kenn ich das CGI-Berechtigungssystem nicht dass ich dies abschliessen
beurteilen kann. Was immer bleibt ist natürlich die Möglichkeit von
fehlerhaften Code des CGI-Programmierers, aber gerade darum gibts ja
die Sandbox.
Oder irre ich mich da ?
Jemand mit Erfahrungen zum CGI-Sicherheitssystem da ?
Und habt ihr Vorschläge von Webhostern die auch CGI im Angebot haben (oder vserver), und einigermassen kostengünstig sind ? (Privates Webhosting, bin kein Geschäftskunde)