Фильтрация

1. ‮PLATINUM (25.05.2012 / 22:17)
Пишу крупный скрипт, но вот хотелось бы советов по фильтрации данных. От xss вроде помогают stripslahes, htmlspecialchars и в этом духе. От php include помогает не использование переменных в конструкции include. А что от SQL inj посоветуете?

2. Виктор (25.05.2012 / 22:20)
mysql_real_escape_string()

3. ‮PLATINUM (25.05.2012 / 22:21)
2. venix, а об этом думал. Но ведь это не панацея от всей заразы?

4. Сергей (25.05.2012 / 22:21)
mysql_real_escape_string достаточно от скул иньекций

5. mix (25.05.2012 / 22:22)
abs() и intval() - если числа
htmlspecialchars() и mysql_real_escape_string() - для символов и букв

6. ‮PLATINUM (25.05.2012 / 22:23)
Vitamin aka mix (25 Мая 2012 / 22:22)
abs() и intval()
Это от подстановку всякого бреда в integer переменную?

7. mix (25.05.2012 / 22:23)
platinum дамаль (25 Мая 2012 / 22:23)
Это от подстановку всякого бреда в integer переменную?
дополнил 5-ый пост

8. ‮PLATINUM (25.05.2012 / 22:25)
А что насчёт переменной, где одна буква хранится? Наверно substr($var,0,1); ?

9. mix (25.05.2012 / 22:26)
в смысле? ты про ограничения?

10. Богдан (25.05.2012 / 22:46)
8. $var[0] - первый символ строки

11. ‮PLATINUM (25.05.2012 / 23:17)
9. Vitamin aka mix, да там в скрипте пол например определяет переменная из одной буквы

Добавлено через 01:59 сек.
А как думаете, лучше помучатся с базой и сразу делать правки в базе или переносить данные юзера в файл и там с ними работать. Ну и в базу потом.

12. ramzes (25.05.2012 / 23:22)
11. platinum дамаль, $pol = ($pol=='M') ? 'M' : 'W';
не надо вообще длину мерить, если известно заранее какие параметры принимаются

13. mix (26.05.2012 / 01:19)
platinum дамаль (25 Мая 2012 / 23:17)
9. Vitamin aka mix, да там в скрипте пол например определяет переменная из одной буквы

Добавлено через 01:59 сек.
А как думаете, лучше помучатся с базой и сразу делать правки в базе или переносить данные юзера в файл и там с ними работать. Ну и в базу потом.
создай форму select'ом и укажи пол М и Ж. проверяй переменную и заноси в бд

14. Сергей (26.05.2012 / 01:55)
для базы достаточно майсклреалэскейпстринг(), для чисел абс(интвал()), для хсс - хтмлспециалчарс()

15. ZaRiN (26.05.2012 / 03:51)
Автор давно пора юзать плюшки, которые производители ПО нам предоставляют, в частности MySQLi и подготовленные процедуры в нем.
А если хочешь использовать устаревшие технологии, то достаточно mysql_real_escape_string или для чисел intval, что бы не поймать sql инъекцию.

16. KOZZ (26.05.2012 / 06:25)
15. Жадный лепрекон, использовать prepaared statements только ради фильтрации - разве не глупо?

17. ramzes (26.05.2012 / 07:33)
Глупо, и замедляет работу скрипта

18. Андрюха (26.05.2012 / 10:18)
Не глупо ничО. Для этого и придумали

19. KOZZ (26.05.2012 / 10:25)
18. Wapruks, facepalm ;

20. ramzes (26.05.2012 / 10:41)
18. Wapruks, сравни с шаблонами и без.
Без повторов запросов.
Скорость упадет и прилично

21. KOZZ (26.05.2012 / 11:28)
21. ZiGR, mysqli_real_escape_string() и htmlspecialchars() разве не справятся с нулл байтом, байтом разворота?

22. ramzes (26.05.2012 / 12:39)
22. eGo Работает на Себя, на сколько я помню в роторе функция check прям в первой строке содержит хтмлспециалчарс.
Я так же помню, что байт разворота в нем работал одно время.
Видимо хтмлспециалчарс не удаляет его

23. ZaRiN (26.05.2012 / 16:46)
20. ramzes, падение в скорости не существенное, зато с подготовленными выражениями можно не бояться sql inj и спать спокойно. А если запрос в цикле будет, так скорее mysql_real_escape_string будет больше занимать процессорного времени, чем подготовленное выражение, которое кешируется в ОЗУ.
Но это уже личное дело каждого, можно ведь вместо mysql_real_escape_string написать свой велосипед)

24. ramzes (26.05.2012 / 16:51)
25. Жадный лепрекон, а если запрос в цикле, то вероятнее всего организация паршивая))
Тем не менее, разница в скорости есть.
Предпочитаю фильтровать до записи.
И париться с иньекциями не надо, и главное, обрабатывать каждый раз на выводе не надо

25. ZaRiN (26.05.2012 / 17:01)
26. ramzes, я не вижу критической разницы в скорости выполнения, но удобство на лицо. Сразу видно какой где тип, не нужно каждую строку обрабатывать mysql_real_escape_string и т.д.

26. ramzes (26.05.2012 / 17:30)
27. Жадный лепрекон,
100 человек читают страницу со 100 записями. Это уже 10000 вызовов фильтраsmile

27. ZaRiN (26.05.2012 / 17:59)
28. ramzes, а почему 10000? вроде всего 100 будет.

$sql = $mysqli->prepare("SELECT * FROM `tbl` WHERE `id`=? ;");
$sql->bind_param("i",$id);
$sql->execute();
$sql->bind_result($text);
while($sql->fetch()) {
	echo $text;
}
$sql->close();


28. ramzes (26.05.2012 / 18:40)
29. Жадный лепрекон, ты о чем вообще?
На выводе у тебя если фильтр будет стоять, то 100 вызовов на рыло, 100 человек (или просто запросов) вызовут 100*100 = 10000 в примерно один момент.
А это уже куда больше чем нольsmile

29. ZaRiN (26.05.2012 / 18:50)
30. ramzes, 100 запросов на страницу? о_О
даже в вордпресе такого количества запросов на страницу нету D

30. ramzes (26.05.2012 / 20:21)
31. Жадный лепрекон, да при чем тут запросы?
100 записей, я же сказал, 100 вызовов фильтра, а не 100 обращений к бд

31. ZaRiN (26.05.2012 / 21:43)
32. ramzes, так ты уже определись с чем-то одним, а то
100 человек читают страницу со 100 записями.
На выводе у тебя если фильтр будет стоять
а теперь уже появляется запись %) да и что ты собрался записывать на странице 100 раз? Это уже из рода фантастики, по типу не ходите люди пешком, а то если идти 100500 км то очень долго - всегда ездите на машине.

32. ramzes (26.05.2012 / 21:52)
Пипец.. я думал я на русском пишу..
Забей, все что я пишу ты почему то понимаешь совершенно неверноsmile

Добавлено через 02:07 сек.
Запись = строка = пост -> не обращение к бд.
Записка на худой конец

33. ZaRiN (26.05.2012 / 21:57)
34. ramzes, можешь примерный код написать, можно без использования подготовленных выражений, а то я, честно говоря, не пойму о чем речь. Шаблон отправляется всего 1 раз, будь там хоть 100 записей, хоть 100000. Далее уже посылаются только данные, т.е. шаблон отправлять 100 раз не нужно.

34. ramzes (26.05.2012 / 22:09)
Забей.
я вообще не говорил про шаблоны, мускули и т.д.
Я говорил о ФИЛЬТРАЦИИ ДО ЗАПИСИ ИЛИ ПОСЛЕ.

35. ZaRiN (26.05.2012 / 22:16)
36. ramzes, тю блин, я думал ты о подготовленных выражениях D

36. Андрюха (28.05.2012 / 14:27)
19. Ты либо аргументируй,либо не мути воду и не пиши просто так

URL: https://visavi.net/topics/32187