Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ominięcie działania skryptu przez odniesienie się do niego dzięki url
plastus321
post 23.02.2013, 16:02:33
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Witam wszystkich : )

Nie wiem czy dobrze zatytułowałem mój problem ale jeśli nie to postaram się chociaż go dobrze przedstawić w tym opisie.

Sprawa wygląda tak...


Mam skrypt przykładowo o nazwie "dodaj_do_bazy_danych.php" w którym jest napisany kod który coś dodaje do mysql przy pomocy pobrania metodą $_POST['costam'] z pliku "dane_do_bazy_danych.php".


Wszystko śmiga pięknie jak ktoś uzupełni formularz itd. ale jeśli ktoś się odniesie bezpośrednio do pliku przez wpisanie linku: "http://www.mojastrona.pl/dodaj_do_bazy_danych.php" rekord zostaje dodany...

pytanie moje brzmi:

Czy da się temu zapobiec dzięki plikowi na serwerze .htaccess żeby np. ignorował ten link przez wpisanie go bezpośrednio i np. odsyłał na stronę główną bez żadnego powiadomienia oraz żeby skrypt nie zadziałał? Czy trzeba jednak otwierać wszystkie pliki które coś dodają do mysql i dodawać pewną instrukcje if która sprawdzi czy w formularzu zostały wszystike potrzebne dane do wstawienia rekordu podane?


Z góry dziękuje wszystkim za odpowiedzi ; )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
filipsiu
post 23.02.2013, 16:50:27
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 2.07.2012
Skąd: localhost

Ostrzeżenie: (0%)
-----


Tak da się, w pliku z formularzem na samej górze dajesz
  1. defined('IN_SITE', true);
  2. if(!defined('IN_SITE')
  3. die('brak uprawnień')

oraz w pliku z dadaniem do bazy
  1. defined('IN_SITE', false);
  2. if(!defined('IN_SITE')
  3. die('brak uprawnień')

lub robisz to w 1 pliku z warunkiem do dodania oraz
if(isset($)POST['wyslij']))

Ten post edytował filipsiu 23.02.2013, 16:51:09
Go to the top of the page
+Quote Post
markonix
post 23.02.2013, 17:01:42
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


@up
od kiedy to stałe tak sobie po prostu przechodzą ze strony na stronę?

Słuszne rozwiązanie to sprawdzenie czy formularz został wysłany.
Robi się to za pomocą isset na dowolnym polu z formularza czy nawet na przycisku (jeśli ma name to także wysyła on wartość).
Jeżeli nie jest utworzone to wywołanie jest manualne i nie powinno powodować żadnej akcji.


--------------------
Go to the top of the page
+Quote Post
pr0woKator
post 23.02.2013, 18:23:56
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 1
Dołączył: 9.02.2012

Ostrzeżenie: (10%)
X----


W formularzu dodaj

  1. <input type="hidden" name="wyslany" />


w skrypcie sprawdź to za pomocą:

  1. if(isset($_POST['wyslany'])){
  2. // tutaj skrypt wykonuje to co chcesz
  3. } else {
  4. // jeżeli nie jest wysłany formularz
  5. header ("Location: index.php"); // przekierowanie na stronę główną
  6. }
Go to the top of the page
+Quote Post
daniel1302
post 23.02.2013, 20:13:18
Post #5





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Nie rozumie po co dodawać ukryte pola?
@markonix powiedział dobrze.

sprawdzasz sobie istniejące już pole(wysyłane)
  1. if (isset($_POST['jakies pole']))
  2. {
  3.  
  4. }


Jak dodajesz niesprawdzany rekord do bazy danych, nie chciałbym mieć u siebie na serwere takiego skryptu, SQL Injection i wgl
Go to the top of the page
+Quote Post
plastus321
post 24.02.2013, 01:04:48
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Dzięki za rady skorzystam na pewno z tych dwóch opcji ; ) tak właśnie myślałem że z tymi isset to chyba najlepsze wyjście ale no jednak miałem jakąś nadzieję : ) ale z tym defined też spróbuję : ) jak na razie temat do zamknięcia i jeszcze raz dzięki all : )
Go to the top of the page
+Quote Post
markonix
post 24.02.2013, 01:15:38
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Sposób z defined jest nieprawidłowy, przynajmniej w takiej formie bo faktycznie można z niego skorzystać ale gdy includujemy pliki.

Ten post edytował markonix 24.02.2013, 01:16:05


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:37