Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%)
|
Witajcie,
napisałem dziś logowanie. Napiszcie czy jest ok? Ogólnie działa ale, że działa to nie wszystko. Co byście zmienili? Co robię źle i bez sensu? czy idea jest oki? Czy idzie ten kod jakoś obejść i wejść mimo logowania na stronę? poniżej kod z komentarzem
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 0 Dołączył: 24.04.2008 Ostrzeżenie: (0%)
|
Cytat tutaj zapytanie count(*) where $_POST['login'] mozesz dac cale to zapytanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ? |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%)
|
Ten post edytował john_doe 26.05.2009, 14:52:25 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%)
|
Podatne na SQL Injection. Możliwość obejścia logowania bez znajomosci danych
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
Jak już posiadasz jakąś klasę to zrób może getRow()? Który zwróci arraya jako jeden wynik $wynik['kolumna'] (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%)
|
pyro jak taki skrypt można obejść możesz napisać. jakiś przykład? to ważny fundament każdej aplikacji
gdy wpiszę np w pole login or 1=1 i hasło blablabla nic się nie dzieje Ten post edytował john_doe 26.05.2009, 15:15:22 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%)
|
wpisz
Cytat ' OR '1'='1
Ten post edytował bim2 26.05.2009, 16:34:17 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
od czego masz prepare, bindValue, bindParam ?
(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Poczytaj w manualu |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Po co najpierw pobierasz ilość rekordów dla login = xxx, a dopiero potem dane dla login = xxx? Odrazu pobierz wszystkie dane - jak nic nie zwrócić, to znaczy, że takiego użytkownika nie ma.
Weź sobie utwórz jakąś stałą, która będzie zawierała adres strony czy coś takiego, bo każdorazowe klepanie w header() tego, to jakaś masakra. Dodatkowo dobrze by było, żebyś po header() dodał: Obiekt spod $dbh mógłby obsługiwać metody getRows() - zwraca wiele rekodrów, getRow() - zwraca jeden, getField() - zwraca pierwszą kolumnę z pierwszego rekordu. Albo lepiej przejdź na PDO. Brak filtracji danych. Nie stosuj numerycznych indeksów w tablicy zwracanej przez bazę danych. Raz, że jest to kompletnie niezrozumiałe, dwa, że w przypadku zmiany kolejności kolumn w bazie skrypt się sypie. Chyba łatwiej będzie:
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 873 Pomógł: 25 Dołączył: 24.07.2005 Ostrzeżenie: (0%)
|
wpisałem w pole login ' OR '1'='1 a w pole haslo -- by zakometować resztę zapytania
i dostałem komunikat Warning: Invalid argument supplied for foreach() in C:\wamp\www\..........................php on line 11 Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\...........................................php:11) in C:\wamp\www\.........................php on line 63 czy wystarczy gdy w zapytaniu SQL dodam przed $_POST htmlspecialchars lub mysql_real_escape_string (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) w 1szej kolejności chcę ustrzec się przed SQL Injection. dzięki za odpowiedzi. Otwieracie mi oczy <gitara> i jeszcze jedno jak w takim razie zapakować wynik zapytania do sesji skoro robię to jak chłopu na wsi? Ten post edytował john_doe 26.05.2009, 22:50:38 |
|
|
|
Post
#11
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat dzięki za odpowiedzi. Otwieracie mi oczy <gitara> A widziałeś czasem przyklejone wątki? Cytat i jeszcze jedno jak w takim razie zapakować wynik zapytania do sesji skoro robię to jak chłopu na wsi? Wyciągasz tablicę i wpychasz do sesji - nie pakuj do niej bezpośrednio zasobu wyniku. |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
Obiekt spod $dbh mógłby obsługiwać metody getRows() - zwraca wiele rekodrów, getRow() - zwraca jeden, getField() - zwraca pierwszą kolumnę z pierwszego rekordu. Albo lepiej przejdź na PDO. Brak filtracji danych. Przecież pisał, że PDO używa. Co do filtracji ja już o tym pisałem. |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 11:09 |