phorror (phorror) wrote in ru_php,
phorror
phorror
ru_php

Защита от SQL Injection

В давешнем списке предложений советов проскакивало написать про SQL инъекции.
В связи с чем я решил вспомнить свою давнюю мечту: составить короткий список рекомендаций по предотвращению появления ошибок. Я намеренно не применяю слово инъекция, поскольку это понятие вторично.
Я не уверен, что такой список возможен в принципе, но хочу попытаться.

Механизм здесь не важен. Плейсхолдеры ли, ручное составление - цель у них одна: подставить на нужное место нужные данные в нужном формате. Соответственно, составить список нужных мест.
Я начну, а вы продолжите.
1. Начнем с данных. Их надо прослешивать/окавычивать. Теоретически, для чисел это делать не обязательно, но тогда нам придется вводить для них метаинформацию с типом, а это делать не хочется, проще кавычить, как всех. Хотя в стрикт моде это, как я понимаю, не проканает?
Вопрос, кстати. Какое дать формальное определение этим "данным"? "значения полей"? Но мы пишем не только значения, но и просто строки. "Просто строки"? Но там же не только строки.
2. Параметры оператора LIMIT. Тут только приведение или числовой плейсхолдер (если есть).
Вопрос, кстати. Лимит - это отдлельное правило, или можно назвать еще несколько подобных, чтобы свести в класс?
3. Что еще?

crosspost in ru_mysql

upd. Мда. Актичность ниже, чем я предполагал.
Ну хорошо. Попробуем изменить вопрос. Какие правила применяете лично вы, если составляете запросы самостоятельно?
Какими плесхолдерами пользуетесь, в каких местах, как и что квотите, что к чему приводите?
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 91 comments