Я должен также санировать данные, прибывающие из $ _GET, если я использую тех, не изменяя государство DB?

Если я также санирую данные, прибывающие из $ _GET, если те данные не собираются изменять государство базы данных.

example of changing the state of database is INSERT, DELETE
example of not changing the state is SELECT.

the problem i think about not sanitizing is this

inside code

$word = $_GET['word'];
$query = "SELECT * FROM tbl_example WHERE name LIKE '%$word%'"; 
mysqli_query($query);


then the data you search is

testword%';DROP TABLE tbl_example; -- 


so final value of $query is

SELECT * FROM tbl_example WHERE name LIKE '%testword%';DROP TABLE tbl_example; -- %'

НО я предполагаю, что эта работа привычки вызывает mysqli_query, и mysql_query() может только выполнить единственный SQL-оператор.

Также, если вы санируете $ _GET тогда в базе данных есть, 'тогда вы ищете' свой поиск, будет соответствовать тому в DB?

Можно ли также показать мне примеры внедрения SQL?

0
nl ja de
См. также этот канонический вопрос о ссылке и Википедия для получения дополнительной информации о Внедрении SQL, включая примеры.
добавлено автор Charles, источник

3 ответы

Скажем, у вашего стола есть 1 миллион рядов, и вы не санируете $ _GET как в примере выше тогда, кто-то может эксплуатировать ваш поиск так, чтобы это возвратило весь 1 миллион рядов, и затем ваш сервер попытается показать всех тех, и это понизится. Это - всего один пример.

Пример

$_GET["word"]="test%' or name LIKE '";
$word = $_GET['word'];
$query = "SELECT * FROM tbl_example WHERE name LIKE '%$word%'"; 

Вопрос

SELECT * FROM tbl_example WHERE name LIKE '%test%' or name LIKE '%'
2
добавлено
Деяние - деяние, плохая практика - плохая практика imo. Doesnt имеют значение, прост ли ваш сайт или огромен. Как Мерфи сказал, "если что-то может пойти не так, как надо, это пойдет не так, как надо"
добавлено автор Hanky Panky, источник
действительно не получил тот вопрос, можно ли объяснить немного больше?
добавлено автор Hanky Panky, источник
таким образом, что, если мой сайт просто прост??
добавлено автор user1933652, источник
если вы санируете $ _GET тогда в базе данных есть ' тогда вы ищете ' ваш поиск будет соответствовать тому в DB?
добавлено автор user1933652, источник
хорошо, если в вас база данных (безотносительно области) есть стоимость ' тогда вы ищете ' конечно, вы убегаете так, это станет \' будет тот матч тот в базе данных, которая является только '
добавлено автор user1933652, источник

то, что необходимо использовать, является подготовленными вопросами вместо, санируют данные, прибывающие из $ _GET

вы используете mysqli как MySQL и даже не убегаете, ДОБИРАЮТСЯ..., необходимо использовать подготовленные вопросы

необходимо использовать как

/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}

from PHP manual

польза прочитана

Очистка данных пользователя в ДОБИРАЮТСЯ PHP

1
добавлено
Я думаю, что вы не отвечали на мой вопрос, вы просто предлагаете решение.
добавлено автор user1933652, источник

Это кажется, что вы пытаетесь найти оправдания не санировать данные. Это - вид подобного высказывания, "Я не должен ставить свой ремень безопасности, если я только веду половину мили, не так ли?" Почему таким образом колеблющийся от последовательного использования методов наиболее успешной практики?

Кроме того, не беспокойте santizing ваши данные. Вместо этого используйте параметризованные вопросы как другие ответы, говорят вам.

Другие дали вам примеры, что даже ИЗБРАННОЕ восприимчиво к злонамеренному входу, но вы, кажется, желаете даже обойти те причины. Не боритесь с ним. Войдите в хорошие привычки и сделайте его правильно.

1
добавлено
Лучший способ очистить ваш ум состоит в том, чтобы использовать параметризованные вопросы, так, чтобы вы don' t тратят впустую ваше время и мозговую энергию, пытающуюся выяснять, когда абсолютно необходимо санировать данные.
добавлено автор Andy Lester, источник
Хорошо я получаю его, мне просто любопытно
добавлено автор user1933652, источник
если вы санируете $ _GET тогда в базе данных есть ' тогда вы ищете ' ваш поиск будет соответствовать тому в DB? действительно ли можно ли, пожалуйста, очистить мой ум на этом??
добавлено автор user1933652, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp