Существует метод procedure AppendRecord(const Values: array of const);
, который присутствует в TDataSet
, TFDTable
и т.д. Если мы будем следовать в глубине TDataset
источника (я не имею FireDac Source). Данные устанавливаются SetFields(Values);
и Fields[I].AssignValue(Values[I])
методами. Интересно, безопасно ли с точки зрения SQL-инъекций передать что-то вроде этого: MyFireDacDS.AppendRecord([..., Edit1.Text, ...])
?ли TFDTable.AppendRecord Injection-Safe
ответ
AppendRecord
не использует какой-либо из Values
в качестве исполняемого SQL и, следовательно, не может быть уязвим для SQL-инъекции больше, чем параметризованный запрос.
SQL-инъекция применяется только к динамически сконструированному SQL с использованием неутвержденного ввода, а поскольку AppendRecord не использует такой SQL, он не подвержен риску внедрения SQL.
(Можно, конечно, проверить это самостоятельно, пытаясь передать SQL в качестве одного из Value
пунктов и посмотреть, что происходит.)
Красиво положить. Я хочу, чтобы больше ответов на Sql_injection включало фразу типа «using unvalidated input», +1. – MartynA
Спасибо, Кен, надеюсь, что метод 'AppendRecord', используемый' TFDTable', действительно такой же, как метод 'TDataSet' –
- 1. Использование «Ли» или «Ли с» для укладки «а» внутри «Ли»
- 2. Нужны ли и используются ли в php?
- 3. Есть ли способ узнать, обновляется ли строка?
- 4. Есть ли способ определить, отключена ли анимация
- 5. Можно ли проверить, повреждено ли устройство?
- 6. Может ли MySQL проверить, существует ли файл?
- 7. Можно ли узнать, используются ли автоматические инструменты
- 8. Действительно ли это проверить, существует ли db_row?
- 9. Могу ли я узнать, перезагружен ли ipad?
- 10. Проверяет ли db.create_all(), существует ли база данных?
- 11. Есть ли способ проверить, включена ли TLS?
- 12. Codeigniter Нужно ли проверять, установлена ли переменная?
- 13. Можно ли проверить, существует ли имя листа?
- 14. Возможно ли определить, было ли выкуплено приложение?
- 15. Можно ли определить, содержит ли строка javascript?
- 16. Можно ли проверить, заблокирован ли NSThread?
- 17. Должен ли я проверить, успешно ли malloc()?
- 18. Можно ли узнать, включено ли соединение VNC?
- 19. Есть ли способ проверить, создан ли SVG?
- 20. Можно ли задать прокладку min на ли?
- 21. Всегда ли блокируется ли TryExecuteTask (задача)?
- 22. Есть ли способ проверить, закрыт ли TextWriter?
- 23. Есть ли способ узнать, заблокирован ли поток?
- 24. Проверяет ли WinSCP Session.GetFiles, завершен ли файл?
- 25. Можно ли определить, является ли UIImage растяжимым?
- 26. Есть ли способ проверить, зашифрован ли файл?
- 27. Можно ли определить, заблокирует ли чтение SecureStream?
- 28. Есть ли способ увидеть, доступен ли window.top?
- 29. Можно ли определить, доступна ли сотовая сеть?
- 30. Могу ли я узнать, ссылается ли объект?
iiuc все, что использует параметризованные операторы SQL вместо построения SQL INSERT из струн безопасно. Поэтому я бы проверил, использует ли код в конце концов простые операции с строками для установки значений полей. – mjn
'AppendRecord' не принимает SQL как любое из значений и проверяет каждое значение в отношении поля, к которому он должен быть назначен, поэтому существует нулевой риск SQL-инъекции. –