Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie skryptu który dodaje wpis do bazy
Kuba707
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
osl
post
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.
Go to the top of the page
+Quote Post
Kuba707
post
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
Go to the top of the page
+Quote Post
krowal
post
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:
  1. echo 'Czy jest zalogowany: '.$_SESSION['LOGGED'];


Ten post edytował krowal 13.02.2011, 19:36:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:30