Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pomijanie informacji z GET
Forum PHP.pl > Forum > Przedszkole
skm
Witam!
Chcę napisać stronę z formularzem, przekazującym dane przez POST do innej podstrony, która wyświetla je w tabeli i zapisuje do pliku.
Wszystko działa jak należy, jest tylko jeden problem: użytkownik modyfikując adres URL może modyfikować dane w tabeli (więc te, które będą zapisane). Przewiduję też "sprytnych" użytkowników, próbujących różnych sztuczek. Czy można jakoś zablokować odbieranie danych z URL, by skrypt pobierał tylko dane z POST? Chcę uniemożliwić kombinowanie smile.gif
peter13135
Nie rozumiem. Jak masz zrobione wyświetlanie danych z GET'a czy POST'a to użytkownik może wysłać dane jak mu się podoba. Nic na to nie poradzisz. Możesz po prostu filtrować te dane w skrypcie PHP.
Wklej lepiej kawałek kodu i napisz po naszemu o co Ci chodzi.
nospor
Cytat
by skrypt pobierał tylko dane z POST
Może Cię zdziwię, ale użytkownik może też wysłać dane POST.
Pamiętaj: wszystkie dane pochodzące od użytkownika (przeglądarki) są potencjalnie niebezpieczne i wszystkie te dane musisz sprawdzać/filtrować - niezależnie od tego czy to jest GET, POST, ciastko czy cokolwiek innego
skm
Ok, postaram się.


-------------a1.php------------------

<form name="formularz" method="POST" action="a2.php">
<input type="checkbox" name="zmienna" value="1" checked="checked" />
<input type="checkbox" name="zmienna" value="2" checked="checked" />
<input type="submit" value="OK"/>
</form>

Tu dane są przesyłane przez POST do pliku a2.php

-------------a2.php------------------

//I tu jest problem. Bo jak jakiś użytkownik przerobi URL np. na: "a2.php?zmienna=3", to w tabeli i w zapisie $zmienna ma wartość 3. A blokada tej możliwości zniechęciło by wielu "hakieruff" do zabawy skryptem.

Wybrana opcja:
<?php
include $zmienna;
?>

//tu jest zapis zmiennej "zmienna" do pliku
lobopol
A czy nie masz przypadkiem register_globals włączonych? Dodatkowo masz bezsensowny ten formularz jak chcesz albo wartość jeden lub dwa to użyj radiobuttonów. Sprawdzaj po $_POST['zmienna'] i nigdy nie rób
  1. include $zmienna;

to jest proszenie się o guza
już prędzej
  1. if($_POST['zmienna'] == 1){
  2. include cos;
  3. } elseif($_POST['zmienna'] == 2){
  4. include cos;
  5. }
  6.  
nospor
Cytat
//I tu jest problem. Bo jak jakiś użytkownik przerobi URL np. na: "a2.php?zmienna=3", to w tabeli i w zapisie $zmienna ma wartość 3. A blokada tej możliwości zniechęciło by wielu "hakieruff" do zabawy skryptem.
I dlatego ci napisałem, że nie zależnie czy to post czy get to ty masz te dane sprawdzać.

Pozatym to co napisał lobopol jest ok.
skm
Ja wiem, że formularz bezsensowny. Napisałem go byle jak. Chodziło o samą metodę "POST".

Niestety, nie mogę zrobić tego w sposób: if($_POST['zmienna'] == 1), ponieważ w prawdziwym programie jest zmienna z imieniem i nazwiskiem do zapisania. smile.gif
lobopol
Dynamiczna jest czy stała? Jeżeli dynamiczna to sprawdź:
-czy nie jest pusta
-czy nie ma znaków ucieczki ../ ./ / .itp
-czy nie jest jakimś niedozwolonym plikiem
jeżeli spełnia powyższe warunki wtedy sprawdź czy w katalogu znajduje się plik (is_file) $zmienna.php i jego includuj
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.