Pokaż wyniki 1 do 5 z 5

Temat: [HTTP] Funckja sprawdzająca: "czy poprawnie zalogowany?"

  1. #1

    Domyślnie [HTTP] Funckja sprawdzająca: "czy poprawnie zalogowany?"

    Napisac funckje sprawdzajaca poprawnosc logoawanie do np.http://www.sklep.flatplanet.pl/admin/).
    Ostatnio edytowane przez erpe : 01-24-2008 - 15:32 Powód: .

  2. #2
    Zarejestrowany
    May 2006
    Skąd
    Wawa
    Postów
    53

    Post

    Hmm...

    Nie napisałeś w czym kompilujesz swój program w C++, ale ujmę temat ogólnie - teoretycznie.

    Aby sprawdzać czy ktoś podał poprawne dane, te same, które widnieją gdzieś w jakiejś bazie na serwerze online możesz to zrobić dzięki typowym metodom otwierania plików przez program. Przykładową klasą w C# zdaje się jest StreamReader. Dzięki niemu można otwierać i zapisywać pliki. W naszym przypadku będziemy go tylko otwierać, a ściężką pliku będzie adres strony www (np. php) z parametrami. Ta właśnie strona będzie zwracać wartości.

    Czyli przykładowo Twój program ma dwa pola, których wartości zastąpmy zmiennymi $login i $haslo. Użytkownik wpisuje login i hasło, program wykonuje "zapytanie" w postaci próby otworzenia i przeczytania pliku:

    Kod:
    using System.IO;
    ***
    StreamReader pliczek = File.OpenText(
    "http://www.serwer.com/plik.php?login="+$login+"&haslo="+$haslo);
    odpowiedz=pliczek.ReadLine();
    
    if(odpowiedz){
    // zalogowany prawidlowo
    }else{
    // login odrzucony
    }
    plik.php i jego przykładowe źródło:
    Kod php:
    $login=$_GET['login'];
    $haslo=$_GET['haslo'];

    $wynik=sprawdz_w_bazie(
    "SELECT userID FROM tabela WHERE login='$login' AND haslo='$haslo'");

    if(
    $wynik){
    echo(
    'true');
    }else{
    echo(
    'false');

    Funkcja sprawdz_w_bazie() w plik.php to przykładowa funkcja pytająca bazę.
    W ten oto sposób Twój program może wiedzieć czy użytkownik podał prawidłowe dane, czy też nie :] Jeśli będziesz się już w tym grzebać to polecam szyfrować dane, np. przez gotowy algorytm md5($fraza);. Jest w C i jest też w php. Parametry otwieranego pliku mogą być zaszyfrowane w nieodwracalny sposób. Skoro dane są zaszyfrowane to skąd plik.php ma wiedzieć o co pytać? A no stąd, że jeśli będziesz wyciągał z bazy każdą wartość i kodował ją tym samym szyfrem md5() to w końcu trafi się taki sam login i hasło po zaszyfrowaniu. Czyli w pewnym momencie wystąpią dwa zakodowane ciągi o identycznej wartości.

    Mam nadzieję, że to objaśnienie trochę Ci pomoże.

    Pozdrawiam

  3. #3

    Domyślnie

    ----cut----
    Ostatnio edytowane przez erpe : 01-24-2008 - 15:33 Powód: .

  4. #4
    Zarejestrowany
    May 2006
    Skąd
    Wawa
    Postów
    53

    Domyślnie

    Hmm..

    Jeśli chodzi Ci tylko o sprawdzenie tego loginu i hasła, możesz dorobić odpowiedni plik .php na serwerze, sprawdzić w jaki sposób zapisane są w tym sklepie w bazie hasła (jaką metodą zaszyfrowane). Dzięki temu napiszesz odpowiednie zapytania do bazy. Wtedy nie będziesz konkretnie używał pliku index.php z folderu /admin/.

    Jeśli jednak chciałbyś to zrobić, to ja Ci osobiście nie pomogę. Nie próbowałem nigdy z poziomu aplikacji wysyłać wartości POSTowych pod formularze. Dodatkowo logowanie się na stronie polega na przydzieleniu odpowiedniego COOKIEsa do przeglądarki, w którym w jakiś sposób zapisane jest, że poprawnie się zalogowałeś itd. Dzięki niemu potem możemy otworzyć strony tylko adminów. W przypadku aplikacji w C musiałbyś się nauczyć obsługiwać nagłówki HTTP, dalej napisać tak program, aby potrafił je odpowiednio interpretować. Dalej musiałbyś wysyłać wartośći POSTowe pod tamten formularz i móc otrzymywać nagłówki zwrotne -> to już nie otwieranie strony www z parametrami w adresie jako pliku txt. Bardzo możliwe, że istnieją gotowe bilblioteki dla takich zastosowań. Dodatkowo wiem, że można dzięki gotowym bibliotekom z IE w prosty sposób stworzyć "swoją" przeglądarkę, bo widziałem nieraz takie triki - być może to by jakoś pomogło.

    Pozdrawiam

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Najprosciej i najszybciej...

    Kod:
    use WWW::Mechanize;
    czyli napisz to w Perl'u, ten modul pozwala ladnie symulowac zachowanie przegladarki, czyli wejscie na strony (http i https), obsluge formularzy (wysylanie), pelne utrzymywanie sesji (cookies, itp), poza tym mozsz okreslic ktory formularz wyslac za pomoca nazwy, numeru kolejnego w kodzie strony, przeszukac strone na obecnosc linkow i isc dalej podajac ich nazwy (tekst), numery, itd... Dosc mocna zabawka :-)

    Ja w ten sposob zbieram czasami raporty od partnerow handlowych prosto z ich systemow, majac tylko dostep do panelu WWW (SSL) na swoim koncie u nich.

    P.S.
    Jesli potrzebujesz takie cos ale coby pod winda chodzilo i klikalo (doslownie) po okienkach i machala myszka (tak tak - javascript, applety java, itp. tez da sie w ten sposob zrobic - juz nie stanowia problemu) to jest do tego inny modul Perl'a... i tez dziala ;-)

Podobne wątki

  1. Polecenia "shellowe" windowsa
    By `^` in forum Windows
    Odpowiedzi: 4
    Autor: 01-22-2007, 20:14
  2. Włamanie czy Przekierowanie
    By irek1022 in forum Hacking
    Odpowiedzi: 3
    Autor: 09-01-2006, 19:17
  3. Odpowiedzi: 1
    Autor: 07-24-2006, 04:08

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj