2010-08-30 13 views
13

Ich habe hier ein kleines embedded Gerät mit uClinux. Es gibt einen Boa-Webserver, der CGI-Skripte unterstützt. Ich muss grundlegende dynamische Seiten machen.C/C++ CGI auf Embedded-Gerät, POST, GET, LOGIN?

Anforderungen

  • GET-Methode für die Navigation
  • POST-Methode für Formulare
  • LOGIN zur Authentifizierung

fand ich diese Seite http://www.cs.tut.fi/~jkorpela/forms/cgic.html Es wird beschrieben, wie GET und POST-Methode zu implementieren .

Aber was ist mit Login und Benutzern? Ist es möglich, Login-Namen und Passwort von Linux zu verwenden? Haben Sie ein Beispiel, wie Sie die HTTP-Authentifizierung implementieren können?

Oder ist besser diese CGI C++ Bibliothek verwenden? http://www.gnu.org/software/cgicc/

Ich habe keine Erfahrung damit, danke.

+0

cgicc funktioniert gut. Stellen Sie sicher, dass Sie über die neueste Version verfügen, um sicherzustellen, dass Sie keine Pufferüberlauf-Schwachstellen erben. – Jay

Antwort

0

Ich führe auch CGI in C auf einem eingebetteten Gerät und mit cgihtml Open-Source-Bibliothek von Eugene Eric Kim.

Bisher scheint es gut für POST-und GET-Methoden zu arbeiten. Ich habe es nicht zur Authentifizierung verwendet.

http://www.eekim.com/software/cgihtml/index.html

0

Ich denke, man entweder die URL-Parameter oder Cookies verwenden, kann die Authentifizierungsinformationen zu speichern. Informationen zum Speichern von Cookies finden Sie im HTTP-Protokoll.

0

Ich bin mir nicht sicher, ob Ihre Linux-Distribution Perl unterstützt. Ich habe vor kurzem eine CGI-Anwendung mit Perl und BOA-Webserver für Angstrom Embedded Linux entwickelt.

können Sie Perl CGI-Modul dafür verwenden.

2

Oder Sie können versuchen http://www.gnu.org/software/libmicrohttpd/ (nie verwendet, aber es gibt Referenzen auf Google in uClinux-dist).

+0

Ich benutze libmicrohttpd. Es ist im Grunde ein HTTP (S) -Server, den Sie in eingebetteten Geräten verwenden können. – Keith

-1

Sie können einfach thttpd oder LightHTTPd versuchen, dies zu dienen, schreiben einen benutzerdefinierten C++ - Webserver ist die beste Lösung, wenn Sie nicht viele Funktionen haben, zu betrachten ... Sie können einfach mit http://www.jbox.dk/downloads/webserver.c diese Implementierung starten und Erweitern Sie es, um Ihre benutzerdefinierten Anforderungen zu unterstützen. Wenn Sie keine dynamischen Web-Hosting-Einrichtungen auf dem Webserver planen.

Grüße, Mike

+0

Die Frage besagt eindeutig, dass dynamische Seiten benötigt werden. –

0

Zur Authentifizierung müssen Sie auf dem Server eine "Session-Statustabelle" halten. Hierbei handelt es sich um eine statische Datenstruktur, Datei oder DB-Tabelle, die die aktuell authentifizierten Sitzungs-IDs, Benutzer-IDs und Berechtigungen registriert. Aus Sicherheitsgründen ist es wahrscheinlich auch eine gute Idee, die IP-Adresse und den Benutzeragenten in der Statustabelle zu speichern (wenn Slashdot Sie fragt, ob Ihre Sitzung sich nie bewegt, sich in einem Subnetz bewegt oder Ihnen folgt) das kommt von außerhalb Ihres IP-Bereichs, es sei denn, Sie sagen ihnen ausdrücklich, dass es in Ordnung ist).

Ihre CGI-Programme können dann auf die Sitzungszustandstabelle zugreifen, um zu sehen, ob eine bestimmte Anfrage von einem angemeldeten Benutzer kommt, wer dieser Benutzer ist und welche Berechtigungen er hat.

Aus Sicherheitsgründen sollten Sie die Sitzungs-ID clientseitig in einem Cookie und nicht in einer GET-Zeichenfolge speichern. Stellen Sie sicher, dass Ihre Sitzungs-IDs so zufällig wie möglich sind.

EDIT: Ihre beste Wette für die Session State Tabelle wäre entweder MySQL/PostgreSQL, wenn Sie es verwenden, oder vielleicht IPC mit einem kleinen C-Programm, das Sie speziell für diesen Zweck schreiben, entweder mit einem eingebauten Home- gewachsen Datenstruktur oder SQLite

0

Dies zeigt Digest-Authentifizierung, aber Sie würden am besten mit einer Bibliothek, um sicherzustellen, dass es in allen Fällen korrekt behandelt wird. Beachten Sie, wie es GET verwendet, obwohl POST genauso gut funktionieren würde.

http://en.wikipedia.org/wiki/Digest_access_authentication

Diese Art der Authentifizierung hat den Browser eher ein kleines Fenster für Details Pop-up als Form eines HTML zu sein. Es ist nicht klar, um welche Art von Login-Mechanismus es sich handelt.

-1

herunterladen Tintenfisch-Cache-Server, es hat eine gute, sichere und schnelle CGI mit c.