За последние 24 часа нас посетили 17973 программиста и 1650 роботов. Сейчас ищут 1209 программистов ...

Как сделать защиту SQL инъекций

Тема в разделе "MySQL", создана пользователем Анатолий1944, 24 мар 2017.

  1. Анатолий1944

    Анатолий1944 Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    30
    Симпатии:
    2
    Как сделать защиту SQL инъекций, и вообще защитить сайт от всевозможных атак и тд...
    Из базы данных выводятся только статьи.

    Я новичок.
     
  2. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Не нужно вам это. Инъекции - это когда от посетителей приходит что-то на сайт через формы.
     
  3. Анатолий1944

    Анатолий1944 Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    30
    Симпатии:
    2
    1.а если я подключу систему комментариев от hypercomments например, защиту не потребуется делать ?
    2.Что если я припилю форму обратной связи на сайт, инфа будет отправляться на емейл с формы, защиту не потребуется делать ?
     
  4. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    А если, то тогда - да, нужна!
     
  5. Анатолий1944

    Анатолий1944 Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    30
    Симпатии:
    2
    Как это сделать ?
     
  6. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Сделать просто - все данные, которые приходят от посетителей сайта (формы) при попадании в SQL запрос должны проходить mysqli_real_escape_string и обрамляться апострофами.
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    А через GET-параметры типа нет?
     
  8. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Ну я тут для новичков объясняю, а не для гуру :)
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.589
    Симпатии:
    1.763
    Если код отправляет данные на мейл с формы, то причём тут вообще SQL? Включаем логику
     
  10. Анатолий1944

    Анатолий1944 Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    30
    Симпатии:
    2
    Я вот тоже подумал, но вдруг там ещё какую защиту надо делать, решил переспросить. И товарищ Drema говорит что нужно.

    А по логике ведь получается, что и для внешней системы комментов ( hypercomments ) защиту не потребуется делать, ведь у них отдельная база данных будет, и защита там организована.

    Конечно я не полностью уверен в том что говорю )

    Можно узнать ваше мнение, потребуется ли мне обеспечивать какую либо защиту, при использовании базы данных для вывода статей, внешней подключаемой системы комментов, и формы обратной связи - инфа с которой будет отправлена на емейл ?
     
  11. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Месье, за вашей логикой не угнаться :) Сами придумываете на ходу, сами делаете выводы - ведь вы все делаете сами! Вы - большой молодец и вам не нужны никакие советы.
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ну а статью он отображать будет как, если не гетами? Новичковым ЧПУ? То, что он новичок, не значит, что нужно только половину инфы доносить.
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.589
    Симпатии:
    1.763
    Конечно.
    https://ru.wikipedia.org/wiki/Email-инъекция
    https://habrahabr.ru/post/318698/
    И только тут нужна защита именно от SQL-инхекций
    --- Добавлено ---
    Конечно.
    https://ru.wikipedia.org/wiki/Email-инъекция
    https://habrahabr.ru/post/318698/
    И только тут нужна защита именно от SQL-инхекций
     
  15. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Ну, вот так, например. Очень секьюрно :)

    PHP:
    1. /site.ru/articles/myarticle.php
    2. <?php
    3.  
    4. echo ... "SELECT text FROM article WHERE name = 'myarticle'";
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Тогда уж /site.ru/articles/myarticle.html

    Коль уж отдельные файлы для каждого материала делать. Неужто это так сложно сказать "признаю, лажанул"? Обязательно надо эти вот притягивания за уши, которые, в попытке оправдания одной лажи, создают новую? Признание собственных ошибок - не самооскорбление, не унижение. Это рост над собой. В аргументированном споре двух адекватных людей никогда нет проигравших. Тот, кто был неправ и признал это, не поретял ничего, кроме заблуждений. Разве этого надо бояться?
     
    acho нравится это.
  17. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Уважаемый мистер Зануда, я написал КАК избежать SQL инъекций в любом модуле, вопросы к этому есть?
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Нет, ты написал, что инъекции возможны только из форм. Когда тебя поправили и сказали про GET, ты начал нести чушь про то, что "это для гуру, а я объясняю для новичков". Когда тебе сказали и об этом, ты начал нести чушь про отдельные файлики для каждой статьи. А еще SQL-инъекция возможна через cookie и даже через уже отфильтрованную инфомрацию, если при работе с базой не было соблюдено правило "одна кодировка на все", это уже инъекции второго порядка. Это тоже только гуру знать разрешено? Гуру не гуру, человеку надо давать достаточно информации, чтобы он мог правильно делать то, что хочет сделать. Злоумышленник не будет спрашивать, гуру ты или не гуру, когда полезет ломать тебе базу.

    А твой совет для избегания инъекций в любом модуле это: "Забей на инъекции. Если нет форм - нет инъекций". Мало того, что он нифига не универсальный, а рассчитан лишь на конкретный частный случай, он еще и вреден. Это ни разу не про любой модуль. Это про то, как пролюбить сервак из-за халатности.

    Да, и это не новость. Добро пожаловать в IT. Тут лучше быть дотошным занудой, чем нести бред. И ладно бы ты сам с собой наедине его оставлял, ты учишь новичков такому отношению.
     
    acho нравится это.
  19. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Читай внимательнее, умник:

    Сделать просто - все данные, которые приходят от посетителей сайта (формы) при попадании в SQL запрос должны проходить mysqli_real_escape_string и обрамляться апострофами.
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Спасибо :)

    Так вот, тут или формы, или вообще все данные. Я хз, зачем уточнять что-то одно, подразумевая все сразу. Заметь, я не один, кто обратил на это внимание. Перечисляешь? Перечисляй все. Подразумеваешь все? Не выделяй что-то одно. Сделали замечание? Просто напиши нормальный ответ, а не неси чушь про новичков и гуру. Точка.
     
  21. Drema

    Drema Новичок

    С нами с:
    20 фев 2017
    Сообщения:
    117
    Симпатии:
    30
    Хз? Ну раз хз, то и спроси тогда что именно я имел ввиду. Так тебя устроит? :

    Сделать просто - все данные, которые приходят от посетителей сайта (например, формы) при попадании в SQL запрос должны проходить mysqli_real_escape_string и обрамляться апострофами.

    Доволен? Я свободен? Спасибо :)