|
|
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
Alexey Tominвадяа чем отличается insert into vvv (...) values (?),(?),(?) от одним запросом типа INSERT INTO `parent` (`name`) VALUES (1), (1), (1)... дополнительной прослойкой? Собственно второй вариант не подходит автору, т.к. у него в строке всякие чудеса. я уже подсказал авторну а чтоб экранировать можно воспользоваться регулярными выражениям. с точки зрения безопасности оба метода раскрывают структуру таблицы, в случае декомпиляции кода, это важно если данный код не серверный. поэтому лучше использовать хранимки, и там проверять на возможные инъекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 14:57 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
вадяа впервом, кто мешает вместо вопроса инъекцию вставить? А как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:55 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
вадяBatch это дополнительная прослойка, требующая время. В нормальных БД это не прослойка, а фича сервера. В мускуле и прослойка? Тогда это ещё один повод забыть о нём. вадяну а чтоб экранировать можно воспользоваться регулярными выражениям. И постоянно трястись, что что-то не учёл. Сколько серверов взломано из-за неучтённого изврата хакера- не счесть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 15:57 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
Alexey Tominвадяа впервом, кто мешает вместо вопроса инъекцию вставить? А как? так же как и во втором случае в обоих случаях данные вставляются из одго источника(тут за небольшим исключением, что в первом случае выполняется по одному значению (для ускорения можно привести и к вставке нескольких)) Код: java 1. 2. 3. 4. Код: java 1. 2. 3. в итоге сервер mysql выполнит один и тот же код авторВ нормальных БД это не прослойка, а фича сервера. В мускуле и прослойка? Тогда это ещё один повод забыть о нём. это прослойка не у БД, прослойка позволяющая преообразовать обращение к БД другим методом, для кого-то более наглядным такая запись insert into vvv (...) values (?),(?),(?) и т.д. более читабельна, чем sb.append("INSERT INTO `test`.`parent` (`name`) VALUES "); for (Parent p : list) { ab.append("('").append( p.getName()).append("'),"); } sb.delete(sb.length() - 1, sb.length()); я ни где не слышал что batch проверяет на инъекции. а если есть такая проверка - то это еще один дополнительный тормоз. боишься инъекций - проверяй вносимые данные на соответствие твоим хранимым данным(с большей долей вероятности можно сказать что у большинства данных нет ключевых слов базыданных) авторИ постоянно трястись, что что-то не учёл. Сколько серверов взломано из-за неучтённого изврата хакера- не счесть. это в любом случае не избежать, если буде поставлена такая цель как пример правильная проверка мыла 15595681 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 17:46 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
Попробовал на оракле (10g XE) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Может быть вариант с текстом можно было сделать лучше, но все равно останутся проблемы: 1. Нужно собрать строку больших размеров. (а чтобы это сделать нужно позволить JVM съесть много памяти) 2. Sql инъекции & экранирование символов. 3. Приседания c локалями (разделителями целой и дробной части). Чтобы внезапно не получить заместо пяти тысяч (5001,35) пол миллиона (500135). 4. Вставка дат\бинарных данных (первое представляю как сделать, второе даже представлять не хочу..) Код Код: java 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. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. Класс Db (если нужен) тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 20:29 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
вадяAlexey Tominпропущено... А как? так же как и во втором случаев обоих случаях данные вставляются из одго источника(тут за небольшим исключением, что в первом случае выполняется по одному значению (для ускорения можно привести и к вставке нескольких)) пропущено... в итоге сервер mysql выполнит один и тот же код Понял. Т.е. MySQL, в отличии от Oracle, firebird, postgresql и т.д. и т.п. не умеет делать ни batch-update, ни predaredStatement и драйвер это тупо эмулирует. Т.е. MySQL использовать нельзя никогда и нигде. А автору- да, нужно извращаться с регулярными выражениями и верить, что его не сломают. вадяя ни где не слышал что batch проверяет на инъекции. а если есть такая проверка - то это еще один дополнительный тормоз. боишься инъекций - проверяй вносимые данные на соответствие твоим хранимым данным(с большей долей вероятности можно сказать что у большинства данных нет ключевых слов базыданных) В нормальных серверах проверка не нужна. Т.к. подстановка параметров в запрос идёт после того, как сервер распарсил текст, превратил его в дерево, построил план запроса. Т.е. в текст можно вставить хоть что- проблем не будет НИКАКИХ. При этом даже без batch-update prepared будет быстрее, т.к. парсер найдёт запрос в кэше и просто возьмёт готовое дерево. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 21:54 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
2avp.mk я б не стал таким образом вставлять более 100 строк для этого существует вставка из файла LOAD DATA авторт.е. MySQL использовать нельзя никогда и нигде. категоричность не есть правильность.... у mysql есть своя ниша и довольно большая насчет predaredStatement в mysql - http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html оно есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 00:36 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
http://dev.mysql.com/doc/refman/5.6/en/c-api-prepared-statement-function-overview.html может я ошибся.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 00:42 |
|
||
|
Подготовка строки для SQL вставки
|
|||
|---|---|---|---|
|
#18+
и вот ещё http://habrahabr.ru/post/149613/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 00:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38581554&tid=2127543]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 503ms |

| 0 / 0 |
