то, насколько безопасный PDO, подготовило операторы

Это зависит от любых других требований, которые Вы имеете.

действительно простой А, но не легко развертываемое решение должен использовать управление WebBrowser для загрузки HTML и затем использования печати Метода печати к локально установленному принтеру PDF. Существует несколько свободных доступных принтеров PDF, и управление WebBrowser является частью платформы .NET.

РЕДАКТИРОВАНИЕ: Если Вы, HTML является XHtml, который можно использовать PDFizer, чтобы сделать задание.

42
задан Bill Karwin 4 March 2011 в 16:49
поделиться

4 ответа

Строго говоря, на самом деле экранирование не требуется, поскольку значение параметра никогда не интерполируется в строку запроса.

Параметры запроса работают так: запрос отправляется на сервер базы данных, когда вы вызываете prepare () , а значения параметров отправляются позже, когда вы вызываете execute () . Таким образом, они хранятся отдельно от текстовой формы запроса. Никогда не существует возможности для внедрения SQL (при условии, что PDO :: ATTR_EMULATE_PREPARES является ложным).

Так что да, параметры запроса помогут вам избежать этой формы уязвимости системы безопасности.

Они на 100% защищены от какая-нибудь уязвимость в системе безопасности? Нет, конечно нет. Как вы, возможно, знаете, параметр запроса заменяет только одно буквальное значение в выражении SQL. Вы можете' t сделать единственный параметр, заменяющий список значений, например:

SELECT * FROM blog WHERE userid IN ( ? );

Вы не можете использовать параметр, чтобы сделать имена таблиц или имена столбцов динамическими:

SELECT * FROM blog ORDER BY ?;

Вы не можете использовать параметр для любого другого типа SQL синтаксис:

SELECT EXTRACT( ? FROM datetime_column) AS variable_datetime_element FROM blog;

Таким образом, существует довольно много случаев, когда вам нужно управлять запросом как строкой перед вызовом prepare () . В этих случаях вам все равно придется писать код осторожно, чтобы избежать внедрения SQL.

78
ответ дан 26 November 2019 в 23:36
поделиться

Это безопасно от внедрения SQL.

Пара вещей, от которых НЕ ЗАЩИЩЕНЫ:

  • Отказ в обслуживании (вызывающий создание чрезмерного количества строк)
  • Межсайтовый скриптинг атаки (если заголовок когда-либо передается другому пользователю)

Безопасность - это больше, чем просто предотвращение внедрения SQL.

11
ответ дан 26 November 2019 в 23:36
поделиться

Что касается SQL-инъекций, я считаю, что это самый безопасный вариант, который вы можете получить, особенно если вы используете такие константы, как PDO :: PARAM_INT.

2
ответ дан 26 November 2019 в 23:36
поделиться

Учитывая упоминание XSS, я думаю, что неплохо также взглянуть на использование таких вещей, как этот класс очистки ввода http://www.phpclasses.org/browse/package/2189.html для предотвращения атак XSS.

1
ответ дан 26 November 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: