|
|
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! На PHP есть упрощенный код: Код: plaintext 1. 2. 3. 4. 5. 6. Достаточно ли использовать функцию mysql_escape_string, или необходимо делать еще какие-то проверки? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:20 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Функцию mysql_escape_string необходимо применять к значениям полей, и желательно эти значения заключать в кавычки(одинарные или двойные) Я бы сделал так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:46 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Сорри, на вотрос так и не ответил... В приведенном табой примере, я могу отправить строку "1 OR 1=1" После выполнения кода получится запрос: Код: plaintext При использовании кавычек получим запрос: Код: plaintext Ну, думаю, более менее понятно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:53 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
т.е. достаточно добавить кавычки? а нет ли такой функции, которая бы отсекала служебные слова или символы, или того, что Вы привели достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 15:57 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Baginт.е. достаточно добавить кавычки? Смотря по ситуации. Как правило, добавление кавычек решает проблему. Я еще ниразу не сталкивался с тем, чтобы это не помогло :) Baginа нет ли такой функции, которая бы отсекала служебные слова или символы Насколько я знаю, стандартных функций нет... Так, небольшое добавление, если априорно известно, что ID - целое число,лучше сделать $Id = intval($_POST['var1']); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:04 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Dmitri P.Так, небольшое добавление, если априорно известно, что ID - целое число,лучше сделать $Id = intval($_POST['var1']);Это-то понятно, на самом деле у меня так и прописано, но если придется использовать строковые поля, например, 'DELETE FROM table WHERE ProductName="' . $ProductName . '"' ? $ProductName='Name" OR 1=1 --' Тогда строка запроса будет такой: 'DELETE FROM table WHERE ProductName="Name" OR 1=1' и mysql_escape_string() может не помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:19 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
я вот когда последний раз тот гандурас под названием PHP пинал писал примерно такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. и дергал его примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:30 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Код: plaintext 1. Будет предпринята попытка снести продукт с именем 'Name" OR 1=1 --', а не все данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:33 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь! буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:42 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
http://www.zone-h.org/files/42/SQLInjectionPasswd.txt вот для примера что чаще всего используют для sql-injection я бы посоветовал маскировать все кавычки проверял на наличие только допустимых символов и (если задача позволяет) выкидывал все лексемы SQL and or union substring и пр. или кодировать полученое и хранить данные тоже в закодированом виде например запрос DELETE FROM table WHERE ProductName="%D0%AB%D0%B2%D0%B0%D0%BF%D1%8B%D0%B2%D0"; врядли приведет к неожиданым последствиям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 16:57 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Что-то вы тут навыдумывали... id -- это же число тут? Ну так и говорим, что $Id = intval($_POST['var1']); Другое дело, что с помощью этого скрипта можно удалить любой элемент из таблицы, но это никаким экранированием не исправишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2005, 22:37 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
DocAlЧто-то вы тут навыдумывали... id -- это же число тут? Ну так и говорим, что $Id = intval($_POST['var1']); Другое дело, что с помощью этого скрипта можно удалить любой элемент из таблицы, но это никаким экранированием не исправишь. Это уже понятно, тут уже обсуждается, если параметром должна быть строка: Bagin Dmitri P.Так, небольшое добавление, если априорно известно, что ID - целое число,лучше сделать $Id = intval($_POST['var1']);Это-то понятно, на самом деле у меня так и прописано, но если придется использовать строковые поля, например, 'DELETE FROM table WHERE ProductName="' . $ProductName . '"' ? $ProductName='Name" OR 1=1 --' Тогда строка запроса будет такой: 'DELETE FROM table WHERE ProductName="Name" OR 1=1' и mysql_escape_string() может не помочь. Dmitri P. Код: plaintext 1. 2. Код: plaintext 1. Будет предпринята попытка снести продукт с именем 'Name" OR 1=1 --', а не все данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 09:18 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
Во-первых, нет никакой реальной необходимости делать запросы на удаление с передаваемым с клиента текстовым параметром. (тут я писал всякие умные слова, но подумал, что какой смысл, если об этом уже написано ?) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 10:25 |
|
||
|
(SQL) проверка введенных данных (защита)
|
|||
|---|---|---|---|
|
#18+
DocAlВо-первых, нет никакой реальной необходимости делать запросы на удаление с передаваемым с клиента текстовым параметром. (тут я писал всякие умные слова, но подумал, что какой смысл, если об этом уже написано ?) )Спасибо за ссылку, я когда-то видел подобное описание, но к сожалению не сделал на нее закладку и не мог повторно найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2005, 10:45 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33334297&tid=1477405]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 408ms |

| 0 / 0 |
