Это зависит от любых других требований, которые Вы имеете.
действительно простой А, но не легко развертываемое решение должен использовать управление WebBrowser для загрузки HTML и затем использования печати Метода печати к локально установленному принтеру PDF. Существует несколько свободных доступных принтеров PDF, и управление WebBrowser является частью платформы .NET.
РЕДАКТИРОВАНИЕ: Если Вы, HTML является XHtml, который можно использовать PDFizer, чтобы сделать задание.
Строго говоря, на самом деле экранирование не требуется, поскольку значение параметра никогда не интерполируется в строку запроса.
Параметры запроса работают так: запрос отправляется на сервер базы данных, когда вы вызываете 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.
Это безопасно от внедрения SQL.
Пара вещей, от которых НЕ ЗАЩИЩЕНЫ:
Безопасность - это больше, чем просто предотвращение внедрения SQL.
Что касается SQL-инъекций, я считаю, что это самый безопасный вариант, который вы можете получить, особенно если вы используете такие константы, как PDO :: PARAM_INT.
Учитывая упоминание XSS, я думаю, что неплохо также взглянуть на использование таких вещей, как этот класс очистки ввода http://www.phpclasses.org/browse/package/2189.html для предотвращения атак XSS.