Hallo an alle,
da ich für ein zukünftiges Projekt eine ziemlich performante Webapplikation benötige, möchte ich diese nicht mit PHP und MySQL aufbauen, sondern mit kompilierten C++-Programmen.
Da ich mir sicher bin, dass es vielleicht noch andere da draußen geben könnte, die das interessiert, gehe ich jetzt mal ganz detailliert darauf ein.
Um mich mal in die Welt der CGI-Programmierung einzuarbeiten, habe ich auf meinem Server ein Verzeichnis "cgi-test" erstellt und darin folgende .htaccess-Datei abgelegt:
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
Options +ExecCGI
Nun habe ich folgenden Quellcode in die Datei index.cpp geschrieben:
#include <iostream>
#include <cstdlib>
using namespace std;
// meine erste Webseite, die von einem C++-Programm generiert wird!
int main() {
// Header-Informationen
cout << "Content-Type: text/html; charset=utf-8\r\n";
cout << "\r\n";
// HTML-Teil
cout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
cout << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
cout << "<html>\n";
cout << " <head>\n";
cout << " <title>Test</title>\n";
cout << " </head>\n";
cout << " <body>\n";
cout << " <p>Willkommen zu meinen ersten SELF-C++-Versuchen. ;)</p>\n";
cout << " <p>Harharhar, jetzt kommt der C++-Code:</p>\n";
// tralala, das hier ist eine Schleife...
cout << " <p>";
for (int i = 1; i <= 100; i++) {
cout << i;
if (i < 100) {
cout << ", ";
}
}
cout << "</p>\n";
/*
// Umgebungsvariablen ausgeben
char *data = getenv("QUERY_STRING");
cout << " <p>" << data << "</p>\n";
*/
cout << " </body>\n";
cout << "</html>\n";
}
Danach habe ich die Datei index.cgi mit folgendem Befehl erstellt:
g++ -O2 -Wall index.cpp -o index.cgi
Nun habe ich ein paar Fragen an euch:
- Was sollte man generell bei Benutzung von C++-Applikationen als CGI beachten?
- Wie sieht das mit den Benutzerrechten aus? Kann das Programm unter anderen Benutzernamen und anderen Gruppen gestartet werden?
- Und wie ist das mit der Sicherheit? Ist schon allein durch die Freigabe des kommentierten Quellcodes in meinem Beispiel (zwischen /* und */) ein Sicherheitsloch geöffnet?
- Gibt es gute Literaturquellen, die ihr mir bezüglich C++ als CGI empfehlen könnt?
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html