![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 20.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam sobie skrypcik na dodawanie newsów do bazy (tylko dla zalogowanego na admina - sesja PHP). Składa się on z trzech plików:
- admin.php - plik w którym jest formularz na dodawanie newsa i inne bajery - functions.js - funkcje JS, jQuery - sendmessage.php - skrypt PHP na wysyłanie zapyań do bazy odpalany przez AJAXA Czyli no wypełniam sobie formularz, klikam dodaj, odpala sie funkcja JS, mała walidacja i jeśli wszystko ok to ajaxem wysyła zapytania do pliku sendmessage.php Ale jak to zabezpieczyć. Użytkownik może przecież podpatrzeć mój kod JS w podglądzie strony i wywołać ręcznie funkcje tak żeby przeszła pierwsze dwa ify. Kod wygląda tak: Kod function sendNews() { var titleV = document.newspanel.title.value; var contentV = document.newspanel.content.value; if(titleV.length < 3) { $("div#result").css({"color":"#D50000", "font-weight":"bold"}); document.getElementById("result").innerHTML = "Tytuł newsa musi zawierać od 3 do 58 znaków."; } else if(contentV.length < 1) { $("div#result").css({"color":"#D50000", "font-weight":"bold"}); document.getElementById("result").innerHTML = "Próbujesz wysłać pustą wiadomość."; } //..... Może przecież w Google Chrome otworzyć stronę, edytować treść jako HTML, dodać formularz, wpisać odpowiednie dane i wpisać adres Kod java script:sendNews(); // to forum oddziela 'java' od 'script' - w tym wypadku te dwa wyrazy mają być połączone;d No nie? Chyba że się myle i się tak nie da.To jest jedno. Ale jak zabezpieczyć sam plik sendmessage.php? Zawartość pliku to łączenie z bazą, wysłanie zapytania i zamknięcie bazy. Równie dobrze ktoś sobie może zrobić własny skrypt i wysłać postem informacje do mojego skryptu (ofc nie zna nazwy pól, no ale....). No więc jak to skutecznie zabezpieczyć? Ten post edytował Kuba707 4.02.2011, 11:40:26 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 41 Dołączył: 6.04.2009 Skąd: Gdańsk/okolice Ostrzeżenie: (0%) ![]() ![]() |
zawsze musisz mieć walidacje danych wejściowych po stronie serwera.
w JS możesz zrobić coś co ładnie wygląda, jest funkcjonalne itp, ale nie możesz na tym tylko polegać. skoro masz admina, to przy dodawaniu newsa po prostu sprawdzaj, czy użytkownik jest zalogowany jako admin. jak nie, podziękuj grzecznie i nie dodawaj nic. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 0 Dołączył: 20.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście zgadzam się że trzeba zrobić dodatkowo walidację po stronie serwera (IMG:style_emoticons/default/wink.gif)
Ale co do tego sprawdzania czy jest adminem, to jeśli dam w pliku sendmessage.php Kod echo 'Czy jest zalogowany: '.$_SESSION['LOGGED']; to mając w kodzie jQuery na wysyłanie wiadomości takie coś: Kod success: function(result) { $("div#result").css({"color":"#008AF0", "font-weight":"bold"}); document.getElementById("result").innerHTML = "Wysłanie AJAXem powiodło się. "; alert('Rezultat (testowo): ' + result); } to wynik jaki dostaje to: Kod Rezultat (testowo): Czy jest zalogowany: A powinna jeszcze na końcu być jedynka. @Edit po dwóch dniach. Mam pytanie. Da się to jakoś skutecznie zabezpieczyć aby dodawanie newsów na stronę poprzez jQuery AJAX było to bezpieczne? Czy może jednak takie rzeczy lepiej zrobić w samym PHP a AJAXA używać do mniej priorytetowych celów jak odświeżanie elementu strony, itp? (IMG:style_emoticons/default/smile.gif) Ten post edytował Kuba707 6.02.2011, 14:31:09 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wywołanie jakiejś akcji przez AJAX nie różni się niczym od zwykłego wejścia, oprócz tego że jest wykonywane w tle. Obsługę sesji i wszystko inne robi się tak samo i można na tym samym polegać. Nie ma żadnych zastrzeżeń co do wykonywania ważnych akcji AJAX'em jeśli zrobisz odpowiednie sprawdzanie praw użytkownika w wykonywanym skrypcie.
A w swoim skrypcie wywoływanym przez AJAX zrób tak: Ten post edytował krowal 13.02.2011, 19:36:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:30 |