Безопасная загрузка файла на альтернативный сервер C # .net 2.0
-
03-07-2019 - |
Вопрос
У меня есть веб-приложение C # на .net 2.0, размещенное на сервере A.Веб-приложение позволяет пользователям загружать файлы с помощью <input id="File1" name="filMyFile" type="file" runat="server" />
на сервер A.Все это работает просто отлично.
Теперь меня просят изменить веб-приложение, чтобы разрешить страницам, обслуживаемым A, разрешать загрузку непосредственно на сервер B без сохранения какой-либо информации на A даже временно.
Меня просят сделать это по соображениям безопасности.Я думал о возможном использовании iframe и о том, чтобы сервер B размещал только часть загрузки, обертывающую запрос с помощью SSL.Я не совсем уверен в последствиях этого для безопасности, однако я видел несколько веб-сайтов, на которых для управления входом в систему они защищают только iframe, содержащий часть входа в систему, а остальная часть их сайта была небезопасной.
Нормально ли это делать?Кто-нибудь может порекомендовать лучший способ?Возможно, предложите базовую архитектуру.
Решение
Я использовал подход iframe, при котором код iframe с формой загрузки размещается на сервере B.Это сработало достаточно хорошо.Вы также можете разместить всю страницу целиком на сервере B, если хотите.
Другие советы
Почему бы вам просто не установить form
действие к защищенной SSL странице на сервере B?
<form method="POST" action="https://serverb/uploadmanager.ashx" ...>
Вы также можете записать файл непосредственно в базу данных SQL.Я предпочитаю такой подход с точки зрения безопасности, поскольку файл никогда не хранится на жестком диске сервера.Затем он может быть передан между двумя серверами.
Оборотной стороной является то, что сложнее выполнять AV-сканирование файлов, которые не были предварительно записаны на диск.