Я работаю над приложением ASP.Net C# (мое первое!), Которое содержит в нем обработчик HTTP. Мое приложение работает с несколькими параметрами, которые передаются через URL. Мой вопрос (ы) выглядит следующим образом:Как я могу безопасно обрабатывать параметры POST в обработчике HTTP с помощью C#?
Пункт ввода моих приложений через обработчик HTTP. Когда я ввожу свой метод ProcessRequest, я назначаю значения параметров URL для переменных, чтобы я мог что-то сделать с данными. Вопрос: Является ли это безопасным, даже если я не устанавливаю значение ни в чем, когда я вызываю URL?
В моем примере: я называю host/handler1.ashx
вместо host/handler1.ashx?something=foo
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string something = context.Request["something"];
context.Response.Write("Hello World: " + something);
}
При вызове выше метод с использованием простой URL без параметров, она выполняет очень хорошо, но строка something
просто пустой/пустой.
Дополнительные вопросы: Что происходит с переменной something
в случае, если я явно не инициализирую ее по URL-адресу? Я понимаю, что это null, но может ли это привести к проблемам?
Опасно или небезопасно вызывать простой URL (т. Е. Должен ли я всегда назвать его указанными значениями параметров)?
Каков наилучший способ назвать «чистый» URL-адрес ashx для запуска приложения, но не для проблем с риском?
Приложение будет выполнять серию последующих перенаправлений GET, поскольку оно накапливает значения и передает их обратно в приложение через строку запроса. Должен ли я делать POST или GET при первом вызове приложения?
Извините, что задал один и тот же вопрос несколькими способами, но я немного смущен по этой теме, и это мой первый раз, когда я пишу такое приложение. Любое терпение и советы, которые вы могли бы дать о том, как безопасно обрабатывать и инициализировать параметры, очень признательны!
'context.Request [" something "]' is safe, как вы его используете, зависит от вас: если 'something' не указано, вы получите значение« null ». Но если вы затем попытаетесь, например, do 'something.Substring (...)', не проверяя, имеет ли он значение null, вы выкинете исключение. –
Спасибо, Тим. Это хорошо знать, я обязательно буду выполнять проверки перед любыми операциями. – K997