Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
 
Burnoutman
5 / 5 / 4
Регистрация: 05.04.2012
Сообщений: 84
#1

Защита от SQL инъекций-PDO - PHP БД/MySQL

07.11.2017, 20:21. Просмотров 607. Ответов 20
Метки нет (Все метки)

Прочитал,что для защиты от инъекций нужно использовать PDO. Если переменная является параметром в запросе,то всё нормально,

PHP
1
2
3
4
$search=$_POST['search'];
$result=$pdo->prepare("SELECT `email` FROM `zayvki` WHERE `email`=?") or die ("<script type=\"text/javascript\">alert(\"Ошибка базы данных. Обратитесь к администратору\")</script>");
$result->execute(array($search));
while($array=$result->fetch(PDO::FETCH_LAZY))

но если названием таблицы,то всё,ничего не работает. Вроде как и не должно работать с названиями таблиц,но как тогда их защитить от инъекций?
PHP
1
2
$page=$_GET['page']; 
$result=$baza->query("SELECT `title` FROM `$page`");
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2017, 20:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос MySQL Защита от SQL инъекций-PDO (PHP БД):

Защита от sql инъекций - PHP БД
Есть сайт, на его странице через метод GET передаётся параметр переменной id записи в таблице. Дальше всё просто SELECT * FROM `table`...

Защита от SQL-инъекций - PHP БД
Здравствуйте, для защита от SQL-инъекций я использовал нижеуказанную функцию для значений параметров: function clear_str($str){ ...

защита от sql инъекций - PHP БД
Добрый день! Подскажите пожалуйста, от sql инъекций спасает ли mysql_real_escape_string? есть ли что-нибудь еще для этого?

MySQL Защита от SQL инъекций - PHP БД
Всем добрый день. Я второй день изучаю php в связи с тем, что мне нужно срочно написать скрипт голосования. Идея такая: Пользователь...

Защита от sql инъекций cookie - PHP БД
Когда авторизированный пользователь шагает по сайту у него каждый раз проверяется куки(записывается онлайн, проверяется на существование(в...

MySQL PDO: Защита от SQL инъекции - PHP БД
Здравствуйте. Интересует способ защиты от SQL-инъекции, с БД работаю используя PDO. Читал про такую функцию: mysqli_real_escape_string,...

20
Jewbacabra
Эксперт PHP
3016 / 2603 / 964
Регистрация: 24.04.2014
Сообщений: 7,956
14.11.2017, 00:33 #16
Цитата Сообщение от Burnoutman Посмотреть сообщение
А как тогда сравнить,есть у меня в базе такие или нет, не делая при этом запрос в базу?
делая запрос в базу, используя WHERE
Цитата Сообщение от Burnoutman Посмотреть сообщение
header('Location:')?
да
1
Burnoutman
5 / 5 / 4
Регистрация: 05.04.2012
Сообщений: 84
14.11.2017, 00:37  [ТС] #17
Цитата Сообщение от Jewbacabra Посмотреть сообщение
делая запрос в базу, используя WHERE
Тогда получается я в запрос подставляю переменную которая приходит от пользователя. Ведь белым списком я и пытаюсь избежать этого запроса без проверки на существующие страницы.
0
Jewbacabra
Эксперт PHP
3016 / 2603 / 964
Регистрация: 24.04.2014
Сообщений: 7,956
14.11.2017, 00:52 #18
Burnoutman, что мешает использовать prepared statements?
1
Burnoutman
5 / 5 / 4
Регистрация: 05.04.2012
Сообщений: 84
14.11.2017, 09:24  [ТС] #19
Цитата Сообщение от Jewbacabra Посмотреть сообщение
что мешает использовать prepared statements?
Вот так?
PHP
1
2
3
$page=$_GET['page'];
$result=$baza->prepare("SELECT `title` FROM `all_pages` WHERE `get_page`=?");
$result->bind_param("s",$page);
Но я опять застреваю на этом,как теперь достать значение из базы? Раньше,после этого кода я делал
PHP
1
2
3
4
while($array=mysqli_fetch_array($result))
    {
        echo $array['title'];
    }
но так не работает
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result
0
Jewbacabra
Эксперт PHP
3016 / 2603 / 964
Регистрация: 24.04.2014
Сообщений: 7,956
14.11.2017, 09:47 #20
Burnoutman, смотри документацию
https://secure.php.net/manual/ru/mysqli.prepare.php
1
Burnoutman
5 / 5 / 4
Регистрация: 05.04.2012
Сообщений: 84
27.11.2017, 08:36  [ТС] #21
Вроде я понял как это работает по той документации, но возникла проблема, при нормальной работе с сайтом жмёшь на ссылку передаётся переменная $_GET['page'] вот как тут http://название сайта/index.php?page=novosty,но если вместо novosty написать 1111111 или другую чушь, то эта чушь выведется на экран. Но эта проблема появляется только в интернете на хостинге, на локальном компе openserver 5.2.2 php 5.5 срабатывает if
PHP
1
2
3
4
5
6
7
8
if(!empty($page))
{
    echo nl2br($page);
}
else
{
echo "<script type=\"text/javascript\">alert(\"Такая страница не найдена!\");</script>";
}
не понимаю что не так.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$page=$_GET['page'];
$result=$baza->prepare("SELECT `text` FROM `all_pages` WHERE `get_page`=?");                                            
 
$result->bind_param("s",$page);
                                            
$result->execute();
 
$result->bind_result($page);
                                            
$result->fetch();
 
if(!empty($page))
{
    echo nl2br($page);
}
else
{
echo "<script type=\"text/javascript\">alert(\"Такая страница не найдена!\");</script>";
}
 
$result->Close()
Добавлено через 10 часов 12 минут
Решил проблему создав новую переменную $new_page
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$page=$_GET['page'];
 
$result=$baza->prepare("SELECT `text` FROM `all_pages` WHERE `get_page`=?");                                            
 
$result->bind_param("s",$page);                                         
 
$result->execute();
 
$result->bind_result($new_page);
                                            
$result->fetch();
 
if(isset($new_page))
{
echo nl2br($new_page);
}
else
{
echo "Такая страница не найдена!";
}
$result->Close();
0
27.11.2017, 08:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2017, 08:36
Привет! Вот еще темы с ответами:

MySQL Защита от инъекций перебором массива - PHP БД
Я знаю, что данная тема уже не раз всплывала тут. Но у меня от прочтения данных тем решилось лишь 50% вопроса. Мы все прекрасно...

Защититься от SQL инъекций - PHP БД
Добрый вечер, Форумчане Не подскажите достаточно ли данных мер для защиты от SQL-инъекций? if(isset($_POST)){ ...

Защита от SQL инекции. - PHP БД
Здраствуйте, скажите пожалуйста как мне защитить ету страницу от SQL инекции. Большое спасибо. Буду благодарен любому совету. &lt;?php ...

Защита от SQL-инъекции - PHP БД
Здравствуйте,подскажите пожалуйста, как защитить данный скрипт на PDO от SQL- инъекции. &lt;?php include (&quot;config/config.php&quot;); if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru