Otrzymałem tę wiadomość z ostrzeżeniem w Netbeans 7.4 dla PHP, gdy używam $ _POST , $ _GET , $ _SERVER , ....
Nie uzyskuj bezpośredniego dostępu do tablicy Superglobal $ _POST
Co to znaczy? Co mogę zrobić, aby poprawić to ostrzeżenie?
Edycja: przykładowy kod zdarzenia nadal wyświetla to ostrzeżenie.
php
netbeans
superglobals
netbeans-7.4
Kannika
źródło
źródło
Odpowiedzi:
filter_input(INPUT_POST, 'var_name')
zamiast$_POST['var_name']
filter_input_array(INPUT_POST)
zamiast$_POST
źródło
$name = filter_input(INPUT_POST, $_POST["name"]);
.filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_NUMBER_INT)
Chociaż trochę się spóźniłem, natknąłem się na to pytanie, szukając rozwiązania tego samego problemu, więc mam nadzieję, że może być jakakolwiek pomoc ...
Znalazłem się w tej samej ciemności co ty. Właśnie znalazłem ten artykuł, który wyjaśnia kilka nowych wskazówek wprowadzonych w NetBeans 7.4, w tym ten:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
Powodem, dla którego został dodany, jest to, że superglobale są zwykle wypełnione danymi wejściowymi użytkownika, czemu nigdy nie należy ślepo ufać. Zamiast tego należy wykonać jakieś filtrowanie i to właśnie sugeruje podpowiedź. Filtruj wartość superglobalną w przypadku, gdy zawiera zatrutą zawartość.
Na przykład, gdy miałem:
Zamiast tego wstawiłem:
Masz dokument filter_input i filter tutaj:
http://www.php.net/manual/en/function.filter-input.php
http://www.php.net/manual/en/filter.filters.php
źródło
Zgadzam się z innymi osobami odpowiadającymi, że w większości przypadków (prawie zawsze) konieczne jest oczyszczenie Twojego wkładu.
Ale rozważ taki kod (dotyczy kontrolera REST):
Nie byłoby tu zbyt użyteczne stosowanie środków odkażających (chociaż też niczego by nie zepsuło).
Więc postępuj zgodnie z zaleceniami, ale nie na ślepo - raczej zrozum, dlaczego są dla :)
źródło
Po prostu użyj
filter_input (INPUT_METHOD_NAME, 'var_name') zamiast $ _INPUT_METHOD_NAME ['var_name'] filter_input_array (INPUT_METHOD_NAME) zamiast $ _INPUT_METHOD_NAME
na przykład
zamiast
I użyć
zamiast
NB: Zastosuj do wszystkich innych zmiennych Super Global
źródło
Oto część wiersza w moim kodzie, który wywołał ostrzeżenie w NetBeans:
Po wielu badaniach i przekonaniu się, że istnieje około miliardów sposobów filtrowania tej tablicy, znalazłem taki, który był prosty. Mój kod działa, a NetBeans jest zadowolony:
źródło