Защита от SQL инъекции

HORO

Новичок
экранирующая, preg_replace, только зачем там регулярка? я что написал что нужно всегда регулярки использовать?
 

HORO

Новичок
не нуну, а вот вот ) Удобно и практично. Я в своей обертке расширил этот синтаксис, получился вообще sql шаблонизатор ) Но самое удобное, что он не мешает работе phpstorm database autocomplete что очень нужно когда в проекте 100500 таблиц с кучей полей
И главное написать такую обертку нет ничего сложного, со всякими удобными плейсхолдерами для массивов, для правильного экранирования в LIKE и пр
 

Adelf

Administrator
Команда форума
@HORO, ты успел стать олдскулом, так и не поюзав реально классные вещи(например, ORM).
 

HORO

Новичок
А ORM и sql builder это не олдскул? Да ладно хоть, 100 лет этому всему и последнее нифига не классное )
 

Vladson

Сильнобухер
1- Я как-то на рнр.ру форуме выкладывал, просто тупо использовал sprintf с функциями ескейпа для чаров проверки на цифры с дигитом это защитой считается ?
2- Не знаю за что вы меня так все не любите, но повторюсь, это нихера не защита, это просто код который делает то что должен и главное не делает то что не должен.... Почему вы все называете это защитой объясните мне плиз, мне реально в CV написать что я занимаюсь защитой от инъекций только потому что я стараюсь писать код без явных багов ???
 

WMix

герр M:)ller
Партнер клуба
Проблема в том, что на пхп вы не знаете типа поля таблицы, ну или вам приходится делать ненужную работу, чтоб правильно написать запрос, а база знает.
Вот как энумами сетами работать?
 

Vladson

Сильнобухер
ты вроде там целую статью выкладывал? ))
Нет. Я на хабре как-то об этом заикался, результат тот же, все придирались к слову "защита" и посылали меня нафик.... На форуме я как и тут просто в топиках обозначал свою позицию, и вместо аргументов против получал лишь посылы нах[фиг]
 

HORO

Новичок
да точно помню, была статья про фильтрацию какую-то, где-то в 2008м или 2009м, на домашней страничке вроде...а может это про xss было...
 

Vladson

Сильнобухер
была статья про фильтрацию какую-то
Так о чём и дело что про то что фильтрация/валидация/фильтрация и прочая мастурбация, это всё никак не называется "защитой от взлома" это просто о том что код надо писать такой который не имеет дыр...
 

FSA

Новичок
Короче. Хотите защититься от SQL-инъекций - используйте подготовленные выражения правильно. Они для этого и созданы.
Ваш КО
 

Фанат

oncle terrible
Команда форума
Давай я один раз докажу, что ты круглый дурак, не понимающий ни одного слова из того что сам же говоришь.
И ты больше не будешь приставать к нам с глупыми претензиями.
блин, да я ничего не предлагаю, я просто пример привел, $_POST нагляднее как бы - типо все данные от юзверя перед запросом экранируются...
и ничего не ломается, я же НЕ написал вот так
$_POST=array_map....
Пункт первый, "ничего не ломается".
HTML:
<form method="POST">
  <input type="text" name="address[]" >
  <input type="text" name="address[]" >
  <input type="text" name="address[]" >
</form>
Что сделает с этим массивом твоя функция?

Пункт второй, защита.
PHP:
$_POST['limit'] = 10;DROP TABLE users;
$data = array_map(array($mysqli,"real_escape_string"),$_POST);
$sql = "SELECT * FROM table LIMIT ".$limit;
"заключить все в кавычки" мы тут не можем.

Пункт третий,
Но данные не передаются в СУБД отдельно от запроса )
Про это ничего не буду писать, чтобы тебя не портить.
Сейчас ты у нас эталонный дурак, сферический. А если хоть что-то узнаешь про то, как работают базы данных, то будешь уже не таким совершенным.

Пункт четвертый,самое сладкое.
рекомендую ознакомиться как это сделано скажем в dbsimple
Ну вот ознакомь нас, родной, как исполнить этот запрос с использованием dbsimple, и где там будет твой array_map.
 

HORO

Новичок
В общем-то то вся защита сводится к тому, чтобы не дать юзверю возможности изменять sql запрос...в принципе сделать это можно хоть регулярками, тобишь валидацией конкретной формы...
ты забыл самый главный пункт, который лишает смысла все остальные пункты.
А про СУБД и данные поподробнее попрошу )
и вот о чем эта фраза?
Подготовленные выражения тем и хороши, что позволяют в КОНКРЕТНОЙ форме сформулировать правила защиты.
что означает "в КОНКРЕТНОЙ форме сформулировать правила защиты" ?

а ну да, остался пункт четвертый - п/х ?n
Так о чём и дело что про то что фильтрация/валидация/фильтрация и прочая мастурбация, это всё никак не называется "защитой от взлома" это просто о том что код надо писать такой который не имеет дыр...
хм...может быть защита это действия которые необходимо проделать чтобы код работал без дыр?
 
Последнее редактирование:

Vladson

Сильнобухер
действия которые необходимо проделать чтобы код работал без дыр?
Анекдот в тему "админ, у нас дыра в безопасности..." админ отвечает "ну хоть что-то у нас в безопасности..."

Моя политика в том что "дыра = баг", нет багов нет дыр, есть баги есть дыры...И вот когда я слышу слово "защита" я читаю "защита от багов" а они будут всегда, от ошибок никто не застрахован, для этого тестирование и было придумано. А вот статьи типа "мы поможем защитить ваш код" вводят в заблуждение, они создают иллюзию что прочитав одну лишь статью вы станете писать идеальный код без багов который невозможно взломать... Это неправда, даже сервера пентагона взламываются с завидной регулярностью...
 

Vladson

Сильнобухер
Не смотрю кино (с где-то 2000-го) а телевизора и вовсе не имею (где-то с 1998-го) а вот интернет почитываю. Даже ребята из Microsoft (или вы тоже считаете что там одни ламеры код пишут ?) на официальном сайте и в официальных прессрелизах неоднократно писали что их ломали и что виной тому была их собственная безалаберность... Про взломы пентагона ссылки не дам, их новости в закладки не кидаю.
 

Vladson

Сильнобухер
Но говоря по русски.

Имеем код...

мыло=пост[мыло]
скюль запрос = вставит мыло в таблицу

если вместо этого программист напишет

скюль запрос = взломать базу данных

Значит ли что человек написавший первый код встроил защиту ? ничо что второй вариант просто лох ?
 
Сверху