Spójrz na poniższe kody:
$username = $_POST["username"];
$_SESSION["user_name"] = $username;
Czy muszę korzystać mysql_real_escape_string()
funkcja podczas ustawiania „ja” $username
wartość też? Czy jest tu jakieś zagrożenie, jeśli nie?
Uwaga: Użyłem PDO, gdy chcę pracować z MySQL.
Odpowiedzi:
5 dla odpowiedzi № 1Nie, nie musisz tam uciekać. Tekst musisz uciec tylko wtedy, gdy łączysz go z innym tekstem, w którym pewne znaki mogą mieć specjalne znaczenie. Widzieć Wielki eskapizm (lub: co musisz wiedzieć, aby pracować z tekstem w tekście).
4 dla odpowiedzi nr 2
Nie musisz, używaj go tylko wtedy, gdy chcesz uciec przed wpisywaniem znaków do bazy danych.
3 dla odpowiedzi nr 3
Mysql_real_escape_string () jest używany dla celów bezpieczeństwa, więc użytkownicy nie mogli zrobić SQL Injection. Jeśli nie używasz $_SESSION["user_name"]
lub $username
w przypadku bazy danych nie musisz jej używać. Możesz przeczytać więcej tutaj - http://php.net/manual/en/function.mysql-real-escape-string.php
mysql_real_escpae_string () dodaje odwrotny ukośnik do każdego znaku specjalnego.
Ponadto powinieneś sprawdzić niektóre przykłady iniekcji SQL, więc masz pomysł, jak to się robi i co dokładnie zapobiega mysql_real_escape_string () - http://www.unixwiz.net/techtips/sql-injection.html .
0 dla odpowiedzi nr 4
Nie musisz, ponieważ dane sesji mogą być manipulowane tylko na serwerze.
Jeśli ty WIEDZIEĆ masz tam dane, które mają być użyte w zapytaniu i mają postacie, które wymagają ucieczki, więc oczywiście powinieneś upewnić się, że ma to miejsce.
Wszelkie wartości przechowywane w sesjach zawierających dowolneJęzyk qry, taki jak „OR 1 = 1”, w zasadzie sprowadza się do słabego projektu IMO - wszelkie wartości w sesji, które mogą otworzyć cię na błędy bezpieczeństwa, są twoją własną winą - po prostu upewnij się, że nie można tego zrobić.