Member 13734676 Ответов: 1

Как я могу избежать инъекции CRLF для приведенного ниже кода? Ответ.appendheader склонен к атак путем внедрения кода возврата каретки и перевода строки.


<%   
    Response.Clear()
    Response.ContentType = "application/force-download"    
    Response.AppendHeader("Content-Disposition", "attachment; filename=""" & Server.UrlEncode(Request.QueryString("filename"))& """")                      
    Response.Buffer = True
    Response.Flush()
    Response.WriteFile(Request.QueryString("path"))
    Response.End()
%>


Что я уже пробовал:

Я пытался сделать сервер.Функция urlencode

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Простой. Никогда не используйте непосредственно пользовательский ввод в своем ответе.

Вы используете запрос.QueryString("имя файла") и запрос.QueryString("путь") непосредственно в ответе, никогда не обрабатывая имя файла и строки пути, чтобы убедиться, что они

1) имеют значения (не null или пустой)
2) не имеет недопустимых символов в том, что, как ожидается, будет именем файла или путем, например CR и LF.

Это тривиальные вещи. Всегда, всегда, всегда проверяйте вводимые пользователем данные, прежде чем пытаться их использовать.