![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 4.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam forumowiczów (IMG:style_emoticons/default/smile.gif)
Nie znalazłem podobnego tematu w wyszukiwarce, więc: Mam problem z edycją rekordów bazy z poziomu panelu admina. Pisałem stronę na webserv i wszystko śmigało. Po zalogowaniu wyświetlały się nazwy pozycji menu strony a przy nich przycisk edytuj. Po kilknięciu na niego wchodził formularz edycji. Teraz wrzuciłem stronę na serwer OVH i ku mojemu zdziwieniu co prawda po zalogowaniu pozycje menu się wyświetlają, ale po wybraniu edycji strona nie wyświetla formularza edycji, a tylko się przeładowuje no i mogę tak klikać edytuj do przyszłego wieku. W pasku przeglądarki widzę, że zmienne $p i $ile są przekazywane przez zapytanie (/admin.php?p=e&id=1). Kod:
(IMG:style_emoticons/default/co_jest.gif) Pomożecie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsze, co mi się rzuciło, to straszna podatność na SQL Injection (IMG:style_emoticons/default/wink.gif)
Hmm, czy mi się wydaje, czy register_globals jest problemem? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 4.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Strzał w 10, dzięki. (IMG:style_emoticons/default/snitch.gif) Jak rozumiem ustawienie jedynki przy zmiennych globalnych w .htaccess nie sprzyja bezpieczeństwu (?) a moje problemy w tym miejscu zamiast się kończyć, dopiero się zaczynają.
Więc powstaje pytanie jak wygląda metoda pozwalająca działać temu formularzowi bez włączania zmiennych globalnych? No i czy podatność na atak wynikła z braku zastosowania jakiejś konkretnej nazwijmy to - sztuczki, czy kod jest że tak powiem skopany od podstaw? Ten post edytował LeoMInor 4.03.2012, 20:03:30 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 92 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Temat: SQL Injection Insertion - poczytaj sobie.
A żeby ten formularz działał, jest kilka dróg m.in. włączenie register_globals(cholernie niepolecane) oraz po prostu przerobienie odpowiednich zmiennych w elementy tablicy $_POST/$_GET/$_REQUEST etc. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 4.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
(...) oraz po prostu przerobienie odpowiednich zmiennych w elementy tablicy $_POST/$_GET/$_REQUEST etc. ok, trochę szukałem, ba - nawet próbowałem przerobić, ale chyba nie wiem jak to ma wyglądać.. jest jakiś dział poniżej przedszkola? (IMG:style_emoticons/default/brzydal.gif) No nic, mimo wszystko dzięki za wskazówkę. Będę szukał dalej jak to zrobić. Pozdrawiam (IMG:style_emoticons/default/smile.gif) cześć, wznawjając temat: Pojawiła się odpowiedź, że jedną z opcji jest "przerobienie odpowiednich zmiennych w elementy tablicy $_POST/$_GET/$_REQUEST etc. " Problem w tym, że nie wiem jak to ma wyglądać. Podpowie ktoś? No i jeszcze kwestia SQL injection - czy zastosowanie addslashes wystarczy żeby się obronić? |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie
$zmienna a $zmienna = $_POST['zmienna']; Tu żadnej filozofii nie ma |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 4.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
nie $zmienna a $zmienna = $_POST['zmienna']; Tu żadnej filozofii nie ma ok, ale jeśli mam coś takiego i wiadomość typu Notice: Undefined index: logout in /(...)admin.php on line 8 to ja mogę dać POSTa zamiast GETa? lub tutaj:
tu z kolei jest błąd dla accessa. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
to oznacza że element taki element tablicy nie został zainicjowany tj. nie została mu przypisana żadna wartość, najlepiej
zanim użyje się jakiejś zmiennej dobrze jest sprawdzać czy istnieje za pomocą isset: Temat: PHP Notice Undefined index możesz też wyłączyć tę informację: ale lepiej tego nie robić bo taka informacja się przydaje przy debugowaniu |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 4.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tylko, że jak dam issety to rzeczywiście giną te powiadomienia, ale formularz nie działa.
Bardziej chodziło mi o to co napisali @mat-bi i @nospor (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
Tutaj ustawiłeś że formularz ma przesyłać dane metodą POST
tutaj natomiast robisz coś takiego:
w starym PHP była możliwość że dane przesyłane przez POST, GET itd. były od razu dostępne przez zwykłe zmienne, dlatego @mat-bi napisał o register_globals (to jest właśnie to) jak widzisz nigdzie wcześniej w kodzie nie przypisałeś wartości do zmiennej $tresc, a skoro powyższa opcja którą opisałem jest wyłączona ze względów bezpieczeństwa Twój skrypt nie działa żeby działał musisz go zmienić tak jak napisał @nospor, czyli dla przykładu:
Dodatkowo zamiast ciągle robić echo kodu HTML lepiej wielokrotnie zamykać blok kodu PHP, przykład:
Ten post edytował jaslanin 1.04.2012, 16:18:45 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 1.10.2025 - 16:46 |