Я сделал wkhtmltopdf для работы на локальном компьютере с использованием ASP.NET. Безопасен ли мой код для запуска на сервере? - PullRequest
0 голосов
/ 07 февраля 2012

Код преобразует текущую HTML-страницу в PDF и показывает ее пользователю.Я никогда раньше не работал с wkhtmltopdf , и меня больше беспокоит безопасность.Безопасно ли запускать его на сервере?Что я должен сделать, чтобы сделать его более безопасным?

string args = string.Format("\"{0}\" - ", Request.Url.AbsoluteUri);
    var startInfo = new ProcessStartInfo(Server.MapPath("bin\\wkhtmltopdf.exe"), args)
    {
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true

    };
    var proc = new Process { StartInfo = startInfo };
    proc.Start();

    string output = proc.StandardOutput.ReadToEnd();
    byte[] buffer = proc.StandardOutput.CurrentEncoding.GetBytes(output);
    proc.WaitForExit();
    proc.Close();
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(buffer);
    Response.End();

Я пытался нам iTextSharp, но у меня были проблемы с ним при использовании арабского языка.

Пожалуйста, предложите, если я могу сделатьэто лучше.

Мое требование простое, я хочу передать URL функции, которая преобразует HTML-страницу в PDF и покажет ее для загрузки пользователю.

1 Ответ

0 голосов
/ 07 февраля 2012

ну, я не уверен, что аргументы могут быть запущены, просто для теста попробуйте это " | cmd.exe", чтобы увидеть, открывается ли что-нибудь на сервере, или вы можете попробовать для проверки " | del . /Q" хмм, может быть, не del, выдолжен был сделать резервную копию ИЛИ, использовать виртуальный компьютер, но как проверить, не использовать ли что-нибудь подобное?

pipeline command | используется в команде для выполнения второй команды в строке в системе или длясоедините две команды вместе.

Обычно аргументы не rus, поэтому следующая защита - это сам .exe-файл, что может делать этот .exe, а что нет.

Для обеспечения общей безопасностиу вас должно быть правильное разрешение для приложения asp.net и его изоляция в его каталоге.

...