Pokaż wyniki od 1 do 10 z 10

Wątek: Co zmienić aby było bezpiecznie

  1. #1
    Zarejestrowany Awatar wolny
    Dołączył
    Mar 2008
    Posty
    47

    Domyślnie Co zmienić aby było bezpiecznie

    Witam, mam takie pytanie co mogę zmienić w kodzie aby był bardziej bezpieczny np. na atak SQL Injection

    Kod:
    <?php
    session_start&#40;&#41;; 
    if &#40;isset&#40;$_SESSION&#91;'login'&#93;&#41;&#41; &#123; 
    	if&#40;isset&#40;$_POST&#91;'ok'&#93;&#41; AND $_POST&#91;'nick'&#93; != null AND $_POST&#91;'konto'&#93; != null&#41;&#123; 
    $nick = htmlspecialchars&#40;$_POST&#91;'nick'&#93;&#41;; 
    $konto = htmlspecialchars&#40;$_POST&#91;'konto'&#93;&#41;; 
    
    
    $spracc = mysql_connect&#40;"localhost", "root"&#41;; 
    	mysql_select_db&#40;'realmd', $spracc&#41;; 
    		$queryacc = "SELECT `username` FROM `account` WHERE `username` = '$konto' LIMIT 1"; 
    		$resultacc = mysql_query&#40;$queryacc, $spracc&#41;; 
    		$arrayacc = mysql_fetch_array&#40;$resultacc&#41;; 
    	mysql_close&#40;$spracc&#41;; 
    	
    $sprnick = mysql_connect&#40;"localhost", "root"&#41;; 
    	mysql_select_db&#40;'characters', $sprnick&#41;; 
    		$querynick = "SELECT `name` FROM `character` WHERE `name` = '$nick' LIMIT 1"; 
    		$resultnick = mysql_query&#40;$querynick, $sprnick&#41;; 
    		$arraynick = mysql_fetch_array&#40;$resultnick&#41;; 
    	mysql_close&#40;$sprnick&#41;; 
    		
    		if &#40;$konto != $arrayacc&#91;0&#93; && $nick != $arraynick&#91;0&#93;&#41;&#123; 
    			
    			echo "Nie ma postaci o nicku&#58; <b>$nick</b><br>"; 
    			echo "Nie ma konta o nazwie&#58; <b>$konto</b>"; 
    			echo "<br><br><br><center>"; 
    			echo "<a href='index44.php'>WR???</a><center>"; 
    		&#125; 
    				else &#123; 
    			//polaczenie do bazy z kontami wow'a
    $polaczenie1 = mysql_connect&#40;"localhost", "root"&#41;; 
    	mysql_select_db&#40;'realmd', $polaczenie1&#41;; 
    		$query1 = "SELECT `id` FROM `account` WHERE `username` = '$konto' LIMIT 1"; //nazwa konta
    		$result1 = mysql_query&#40;$query1, $polaczenie1&#41;; 
    		$array1 = mysql_fetch_array&#40;$result1&#41;; 
    	mysql_close&#40;$polaczenie1&#41;; 
    //polaczenie do bazy z postaciami wow'a	 
    $polaczenie2 = mysql_connect&#40;"localhost", "root"&#41;; 
    	mysql_select_db&#40;'characters', $polaczenie2&#41;; 
    		$query2 = "SELECT `account` FROM `character` WHERE `name` = '$nick' LIMIT 1"; //nazwa postaci
    		$result2 = mysql_query&#40;$query2, $polaczenie2&#41;; 
    		$array2 = mysql_fetch_array&#40;$result2&#41;; 
    	mysql_close&#40;$polaczenie2&#41;; 
    //updatowanie bazy z postaciami	
    $polaczenie3 = mysql_connect&#40;"localhost", "root"&#41;; 
    	mysql_select_db&#40;'characters', $polaczenie3&#41;; 
    		$query3 = "UPDATE `character` SET `account` = '$array1&#91;0&#93;' WHERE `name` = '$nick'"; 
    		$result3 = mysql_query&#40;$query3, $polaczenie3&#41;; 
    	mysql_close&#40;$polaczenie3&#41;; 
    	
    	//echo "$array2&#91;0&#93; zostalo zmienione na $array1&#91;0&#93;"; 
    	echo "<br><br><br><br><br>"; 
    	echo "<center>Postać&#58; <b>$nick</b> została przypisana do konta&#58; <b>$konto</b>"; 
    	echo "<br><br>"; 
    	echo "<a href='index44.php'>WR???</a></center>"; 
    		&#125; 
    &#125; 
    
    else &#123; 
    echo "<center><br><br><br><br><br><br>"; 
    echo "<form action='index44.php' method='POST'>"; 
    echo "Nick postaci do przeniesienia <input type='text' name='nick'>"; 
    echo "<br>"; 
    echo "Konto na które ma zostać przeniesiona postać&#58; <input type='text' name='konto'>"; 
    echo "<input type='submit' name='ok' value='PRZENIES'>"; 
    echo "</form>"; 
    echo "<br><br><br>"; 
    echo "<a href='wyloguj.php'>WYLOGUJ</a></center>"; 
    &#125; 
    &#125; 
    else &#123; 
    echo "<center><b>Nie masz uprawnien aby oglądać tą strone</b></center>"; 
    &#125; 
    ?>
    i drugi kod

    Kod:
    <?php
    include_once&#40;'db.inc.php'&#41;; 
    include_once&#40;'setings.inc.php'&#41;; 
    session_start&#40;&#41;; 
    $db = new db&#40;$db&#91;'host'&#93;, $db&#91;'user'&#93;, $db&#91;'pass'&#93;, $db&#91;'name'&#93;&#41;; 
    
    if&#40;!$db->db_connection&#41; 
    &#123; 
            die&#40;"Connection Error"&#41;; 
    &#125; 
    if&#40;isset&#40;$_POST&#91;'ok'&#93;&#41; AND isset&#40;$_POST&#91;'login'&#93;&#41; AND isset&#40;$_POST&#91;'haslo'&#93;&#41;&#41;&#123; 
    $login = $_POST&#91;'login'&#93;; 
    $haslo = $_POST&#91;'haslo'&#93;; 
    $mysql = mysql_fetch_array&#40;mysql_query&#40;"select `id` from `konto` where `login` = '$login' AND `haslo` = '$haslo' limit 1"&#41;&#41;; 
    if&#40;$mysql != NULL&#41;&#123; 
    $_SESSION&#91;"login"&#93; = $login; 
    header&#40;"Location&#58; index44.php"&#41;; 
    &#125; 
    else &#123; 
    echo 'Wystąpił błąd podczas logowania!'; 
    &#125; 
    &#125; 
    else &#123; 
    ?><center><br><br><br><br><br><br> 
    <form action='index.php' method='POST'> 
    Login&#58; <input type='text' name='login'> 
    Password&#58; <input type='password' name='haslo'> 
    <input type='submit' name='ok' value='Zaloguj'> 
    </form></center> 
    <?php
    &#125; 
    ?>

  2. #2
    WAN
    WAN jest nieaktywny
    Grupa MmoCenter
    Dołączył
    Sep 2007
    Posty
    976

    Domyślnie Co zmienić aby było bezpiecznie

    Walidacja formularzy: http://gajdaw.pl/php/walidacja-formularzy/
    Bardzo fajna stronka, ktora opisuje co nalezy zrobic, aby formularz byl bezpieczny.

  3. #3
    Grupa MmoCenter Awatar Kiri
    Dołączył
    Sep 2007
    Posty
    1,741

    Domyślnie Co zmienić aby było bezpiecznie

    OMG, jaki to żmietnik...

    Walidować? Proste, rzucić if'a z sprawdzeniem czy dany ciąg znaków z loginu i/lub hasła pasuje do tego co wymagasz, jeżli chcesz tylko litery i cyfry to rzucasz ctype_alnum i wsio...

    Ponadto jeszcze poczytaj o Session Hijacking i tym pochopne
    Sio, nie pomagam via PM !



  4. #4
    Zarejestrowany Awatar piraci
    Dołączył
    Sep 2007
    Posty
    534

    Domyślnie Co zmienić aby było bezpiecznie

    Zapraszam do mojego arta w zinie "bezpieczeństwo a skrypty w php" - link w podpisie .

  5. #5
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie Co zmienić aby było bezpiecznie

    Skoro już takie pytanie padło:
    http://albi.vxe.pl/2007/02/26/sql-injection/
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

  6. #6
    Zarejestrowany
    Dołączył
    Feb 2008
    Posty
    103

    Domyślnie Co zmienić aby było bezpiecznie

    cus takiego to jakby pisane od końca co do formularzy i waldowwania , ja wrzucam kazdy post w tablice jak jest ich wiecej niz 3 -4 i po tablicy smigasz czy empy lub isset , zwrocone zmienne jesli sa dajesz addslashes i to na poczatek powinno starczyc

  7. #7
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie Co zmienić aby było bezpiecznie

    Złudne bezpieczeństwo. Jeżeli nie dajesz apostrofów przy liczbach, można w banalny sposób nadal dopisać coż do zapytania, pomimo addslashes().
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

  8. #8
    Grupa MmoCenter Awatar Kiri
    Dołączył
    Sep 2007
    Posty
    1,741

    Domyślnie Co zmienić aby było bezpiecznie

    Dlatego ja jakoż nie ufam tym funkcjom (addslashes, htmlspecialchars, itp) do końca tylko narzucam wymagany ciąg jak wspomniałam wyżej o ctype_ i amen.
    Sio, nie pomagam via PM !



  9. #9
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie Co zmienić aby było bezpiecznie

    Kiri: Dla danych tekstowych addslashes(), dla danych numerycznych rzutowanie. Wystarczy zwykłe (int)$zmienna .
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

  10. #10
    Zarejestrowany
    Dołączył
    Sep 2007
    Posty
    258

    Domyślnie Co zmienić aby było bezpiecznie

    Ja powiem, krótko
    Kod:
    $nick = htmlspecialchars&#40;$_POST&#91;'nick'&#93;&#41;; 
    $konto = htmlspecialchars&#40;$_POST&#91;'konto'&#93;&#41;;
    Potem się loguj z danymi :-)
    login :wolny' #
    hasło: fsdfvkvn
    I efekt może byc ładny :-)
    Samo htmlscpecialchars nie wystraczy podtrzeba coż co bedzie dawało ukożniki.
    O czy wspomiano wyżej.

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Jak Zmienić Tło.
    Przez gabi122 w dziale prp
    Odpowiedzi: 4
    Ostatni post / autor: 29-06-2010, 12:43
  2. Nie zmienia sie obrazek
    Przez zabka229 w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 9
    Ostatni post / autor: 11-06-2010, 14:39
  3. [R]Jak zmienić mapę?
    Przez Pawlinio w dziale Support Vallheru
    Odpowiedzi: 3
    Ostatni post / autor: 01-08-2008, 15:51
  4. Jak zmienić logo gry?
    Przez Albi_PL w dziale Support Vallheru
    Odpowiedzi: 7
    Ostatni post / autor: 18-06-2008, 11:56
  5. Jak zmienić nazwę gry?
    Przez Flips w dziale Support Ugameli
    Odpowiedzi: 5
    Ostatni post / autor: 14-01-2008, 19:33

Zakładki

Uprawnienia umieszczania postów

  • 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
  •