$id = trim((int)$_GET['id']); $sql = 'SELECT * FROM users WHERE id = ' . $db->quote($id) . ' LIMIT 1'; $run = $db->query($sql)->fetch(); Метод цитаты PDO безопасен в качестве подготовленных операторов? Или я должен использовать подготовленные заявления в моем сценарии?
Я пытаюсь сделать мой PHP максимально безопасным, и две основные вещи, которые я пытаюсь избежать, – это Инъекции mySQL Скрипты с поперечной стороны (XSS) Это сценарий, который я получил против mySQL Injections: function make_safe($variable) { $variable = mysql_real_escape_string(trim($variable)); return $variable; } http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/ Против XSS я нашел следующее: $username = strip_tags($_POST['username']); Теперь я хочу объединить их […]
Поэтому я знаю о MySQL-инъекции и всегда избегаю ввода всех моих пользовательских данных перед тем, как поместить их в свою базу данных. Однако мне было интересно, представьте, что пользователь пытается отправить запрос для ввода, и я убегаю. Что делать, если я в последующий момент беру это значение из базы данных и использую его в запросе. […]
Кто-то взломал мою базу данных и сбросил таблицу. На моей странице PHP есть один единственный запрос, в котором я использую mysql_real_escape_string: $db_host="sql2.netsons.com"; $db_name="xxx"; $username="xxx"; $password="xxx"; $db_con=mysql_connect($db_host,$username,$password); $connection_string=mysql_select_db($db_name); mysql_connect($db_host,$username,$password); mysql_set_charset('utf8',$db_con); $email= mysql_real_escape_string($_POST['email']); $name= mysql_real_escape_string($_POST['name']); $sex= mysql_real_escape_string($_POST['sex']); if($_POST['M']!=""){ $sim = 1; }else { $sim = 0; } $query = "INSERT INTO `users` (`email`, `name`, `sex`, `M`) VALUES […]
Если пользовательский ввод вставлен без изменений в SQL-запрос, тогда приложение становится уязвимым для SQL-инъекции , как в следующем примере: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); Это потому, что пользователь может ввести что-то вроде value'); DROP TABLE table;– value'); DROP TABLE table;– , и запрос будет выглядеть следующим образом: INSERT INTO `table` (`column`) […]
Мне просто интересно было ли, что я мог бы использовать некоторые формы подготовленных операторов в MySQL, поэтому мне не пришлось бы скрывать все мои входы, и мне не пришлось бы переключать все мои файлы с MySQL на MySQLi. Я действительно не доверяю функциям экранирования, поэтому, если есть какие-то альтернативы, которые работают в обычном MySQL, было […]
Я пытаюсь защитить себя от SQL-инъекции и использую: mysql_real_escape_string($string); При публикации HTML это выглядит примерно так: <span class="\"className\""> <p class="\"pClass\"" id="\"pId\""></p> </span> Я не уверен, сколько еще добавлений, добавленных real_escape_string, поэтому не хотят просто заменять несколько и пропустить других … Как мне «декодировать» это обратно в правильно отформатированный HTML-код с чем-то вроде: html_entity_decode(stripslashes($string));
Есть ли возможность SQL-инъекции даже при использовании функции mysql_real_escape_string() ? Рассмотрим эту ситуацию с образцом. SQL построен на PHP следующим образом: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'"; Я слышал, что многие люди говорят мне, что такой код по-прежнему опасен и может быть mysql_real_escape_string() даже при […]
Я mysql_* свой код от использования mysql_* до PDO . В моем коде у меня был mysql_real_escape_string() . Что эквивалентно этому в PDO?
Я прочитал это раньше «вход фильтра, выход выхода», но является ли фильтрация ввода действительно необходимым, когда я использую PDO с PHP? Я думал, что с PDO мне не нужно фильтровать входные данные, потому что подготовленный оператор заботится о SQL-инъекциях. Я думаю, что «выход выхода» по-прежнему действителен, но «вход фильтра» по-прежнему действителен?