Passwortgeschützte Internetseite ansteuern
-
Hallo Leute,
Ich möchte gerne, dass mein Programm einen Link zu einer passwortgeschützten Internetseite bietet. Das Passwort soll zuvor eingegeben werden können. kann ich da mit ShellExecute(...) was machen??? Ich möchte, dass der Standartbrowser mit eben dieser entsprechenden Seite geladen wird, wie es ja bei ShellExecute(...) der Fall ist. Ich möchte nur wissen, ob und wie das mit einem Passwort funktioniert.
Vielen Dank,
Euer Entertainer
-
Meinst du das:
http://user:password@webseite.xy/geheim.html
?
-
http://username:passwort@seite.dom
Dann wird ne Seite geöffnet und Username und passwort übermittelt... Allerdings wird dann der IE (als beispiel) nochmal nachfragen, ob man wirklcih wechseln möchte.Ansonsten halt php script basteln oder so und dann mit
http://seite.dom/index.php?username=blah&passwort=blah
aufrufen.. Aber auch net so schön, weil man dann das Passwort sieht... Bei ersterem sieht man nur Sterne...Beides nicht umbedingt die Optimale Lösung... ^^
Gibt bestimmt noch andere..
Mist da war wer schneller
-
Hallo Leute,
Schonmal vielen Dank, aber bei mir funktioniert das irgendwie nicht:
Hier ein Beispielcode:
ShellExecute(Handle, "open", "https://Entertainer:EntertainerPasswort@GeschuetzeSeite.org/public/", 0, 0, SW_SHOWNORMAL);
In diesem Beispiel möchte ich als Benutzer "Entertainer" mit dem Passwort "EntertainerPasswort" auf die Beispielseite (die es natürlich nicht gibt) https://GeschuetzteSeite.org/public/ gelangen, was allerdings nicht funktioniert.
Was mache ich falsch???
Vielen Dank,
Euer Entertainer
-
Und was genau passiert be dem aufruf?
-
Bei aktuellem IE funktioniert die USER/PW-Übergabe via http nicht mehr.
-
Wenn es nicht mehr funktioniert, wie kann ich es dann machen???
Bin für alles dankbar,
Euer Entertainer
-
Wie Vernochan bereists gesagt hatte, php skript basteln. Aber das geht natürlich nur wenn die seite dir gehört und du auch die daten ändern kannst.
Wie ist die seite denn per passwort geschützt ? Per Formular und PHP oder per htaccess (aufpoppendes fenster mit login aufforderung )?
MFG Simon
-
Wieso geht das nicht mehr?
Und was ist mit .htaccess gesicherten seiten? da wird Username/Passwort doch auch über http übertragen.. ?!?!
Und www.animexx.de (jaja schlagt mich :D) bezieht auch Username/Passwort ohne eine Extra seite.... Halt über dieses kleine eingabe fenster..Oder meinst du, das lediglich die angabe über URL nicht mehr geht?
Oder ich liege falsch mit meinem Obig gesagtem..
-
www.animexx.de benutzt (glaub ich zumindest) eine PHP-Header funktion.
Hier mal ein beispiel:
<?php if($PHP_AUTH_USER!="usertest" OR $PHP_AUTH_PW!="pwtest") { Header('HTTP/1.1 401 Unauthorized'); Header('WWW-Authenticate: Basic realm="Top Secret"'); echo "Mit Abbrechen kommst Du hier nicht rein.\n"; exit; } echo "username / passwort richtig"; ?>
In php kannst du dann noch nach
echo "username / passwort richtig";
den benutzernamen / passwort über $PHP_AUTH_USER und $PHP_AUTH_PW bekommen.
kannst ja mal versuchen Dateiname.php?PHP_AUTH_USER=usertest&PHP_AUTH_PW=pwtest
die parameter direkt zu übergeben.mfg simon
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Gibt es nicht noch irgendeinen Weg, um das ganze unter C++ anzusteuern.
Es soll im Browser einfach die Internetseite nach erfolgreicher Passworteingabe erscheinen.Gebt mir bitte Anregungen, wenn ihr etwas parat habt!
Vielen Dank,
Euer Entertainer
-
Usernamen und Passwort sind base64 verscxhlüsselt.
base64(username:passwort)
Wenn du das ganze in einem POST als
Authorisation: Basic base64(username:passwort)
\n\nan den Server sendest bist du drin. Mehr macht der Browser auch nicht.
Wie du das aber mit dem IE machst KA.
-
Sorry, aber ich kenne mich da nicht so gut aus, könntest du mir vielleicht etwas Beispielscode zeigen???
Ich weiß nicht wie so etwas wie ein POST funktioniert.Vielen Dank,
Entertainer
-
Hmm.. also wird, wenn man mit PHP_AUTH_USER arbeitet der Username und das Passwort nicht im Header gesendet, sondern die PHP Parser gibt einen Zusätzlichen Header aus.. oder so in der art.. ?
Auf jedenfall funktioniert die sache mit PHP_AUTH_USER=usertest&PHP_AUTH_PW=pwtest bei ANimexx nicht... ^^"
Okay hab grad bei meinem Homeserver register_globals abgestellt.. jetzt geht das auch nichtmehr.. wird also bei Animexx daran dann liegen... Hmmm...Interresant...
Aber wie genau is das dann mit .htaccess geschützten Ordnern? Da kommt ja auch die PW Abfrage....
-
Was ich geschrieben habe wird im Header gesendet.
IMHO kann man das bezeichen wie man will. Man öffnet eine Socket und fängt an mit
POST /www.c-plusplus.net HTTP/1.0\nHost: www.c-plusplus.net\nContent-Type applikation/x-www-form-urlencoded\nContent-Length: 35\nAuthorisation: Basic base64(username:passwort)\n\nMEINEPOSTVAR=hallo&meinezweite=welt\n\n
Die NEWLINE sind zu beachten. Conetnt-Length ist die Zeichenlänge nach der Authorisierung. Hier 35 Zeichen beginned bei MEINEPOSTVAR
Das ganze sendet man nun über den Socket und erwarte die Antwort. So macht es jeder Brwoser.
-
ich verstehe es leider immer noch nicht. In diesem Thema bin ich noch recht neu. Könnte mir nicht vielleicht jemand etwas C++ Code als Beispiel bereitsstellen???
Ich komme echt nicht weiter. Bitte helft mir!!!
Vielen Dank,
Euer Entertainer
-
Du besorgst dir eine Klasse welche dir Socket-Funktinen zur verfügung stellt. Dann eine Socket zu einem Webserver öffnen und das oben angezeigte senden. Parameter und Website muss geändert werden.
-
Wozu sollte das gut sein? Er will doch offenbar nicht selbst den Inhalt der Seite abrufen sondern einen auf dem System installierten Browser dazu veranlassen, die Seite zu laden.
-
Ich habe nun versucht das alles in eine Funktion zu packen, aber es funktioniert nicht. Hier mein Source:
void __fastcall TForm1::WebServerAnsteuern(string strUrl, unsigned short usPort) { WSADATA wsa; if(::WSAStartup(0x101, &wsa )!= 0) // Sockets starten { WSACleanup(); _exit(0); } string strHost, strPfad; char caHostName[256], caFilePath[MAX_PATH]; strPfad.assign(strUrl.substr(strUrl.find("http://")+7)); strHost.assign(strPfad, 0, strPfad.find_first_of("/")); strPfad.assign(strPfad.substr(strPfad.find_first_of("/")+1)); struct hostent*(Host) = gethostbyname(strHost.c_str()); if(Host) { strcpy(caHostName, inet_ntoa(*((struct in_addr*)Host->h_addr_list[0]))); } else { strcpy(caHostName, strHost.c_str()); } SOCKADDR_IN addr; addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr(caHostName); addr.sin_port = htons(usPort); SOCKET Sock = socket(AF_INET, SOCK_STREAM, NULL); unsigned long NONEBLOCK = 1; if(Sock == SOCKET_ERROR || connect(Sock, (PSOCKADDR) &addr, sizeof(addr)) == SOCKET_ERROR || ioctlsocket(Sock, FIONBIO, &NONEBLOCK) != 0) { closesocket(Sock); WSACleanup(); } else { fd_set fds; struct timeval tv; tv.tv_sec = 20; tv.tv_usec = 0; char caUrl[256]; sprintf(caUrl, "%s%s%s%s%s", "GET /", strPfad.c_str(), " HTTP/1.0\r\nUser-Agent: Benutzer- Anmeldung 1.0\r\nHost: ", strHost.c_str(), "\nAuthorisation: Basic base64(Benutzer:Passwort)\n\n"); int iSel, Byte, err = 0, iTimeOut = 0; unsigned long ulSum = 0, ulSendLong = strlen(caUrl); do { FD_ZERO(&fds); FD_SET(Sock, &fds); iSel = select(Sock + 1, NULL, &fds, NULL, &tv); if(iSel && FD_ISSET(Sock, &fds)) { Byte = send(Sock, caUrl, ulSendLong, 0); if(Byte == SOCKET_ERROR) { err = GetLastError(); if(err == WSAEWOULDBLOCK) { if(iTimeOut++ < 1000) { Sleep(10); continue; } } closesocket(Sock); } else if(Byte > 0) { ulSum += Byte; if(ulSum >= ulSendLong){break;} } else { if(iTimeOut++ > 1000) { closesocket(Sock); WSACleanup(); } Sleep(10); } } else { if(iTimeOut++ > 1000) { closesocket(Sock); WSACleanup(); } Sleep(10); } } while(!err); } closesocket(Sock); WSACleanup(); Application->MessageBox("Anmeldevorgang beendet!", "Anmeldevorgang beendet", 0+64); }
Ich hoffe, ihr könnt mir nun helfen!!!
Vielen Dank,
Euer Entertainer