У меня есть сайт для обмена изображениями и видео, я думаю, что это небезопасно. Потому что любой может загружать оболочки или вредоносные программы вместо изображений и видео. Поэтому я хочу знать, как YouTube или Facebook предотвращают их от этой уязвимости. Пожалуйста, скажи мне кто-нибудь.
Ты не можешь предотвращать их от загрузки.
Вы должны иметь дело с загруженным контентом и решать, исходя из того, что вы получаете и откуда он, сохранять его или нет.
Одним из быстрых способов сделать это может быть перезапись или повторное мультиплексирование загруженных фотографий и видео. Так что, если вы (скажем) измените размер изображения (возможно, чтобы сделать эскиз), и изменение размера не удастся, то, вероятно, это не изображение. Проанализируйте загрузку — можно ли ее даже декодировать как изображение? То же самое для видео — если его нельзя конвертировать (или хотя бы прочитать), не разрешайте.
Мне нравится работать в системе белого списка. Убедитесь, что вы принимаете, соответствует некоторым критериям. Скажем, вы хотите принимать только изображения в формате JPEG. Откройте загруженный файл и проверьте наличие стандартных заголовков JPEG JFIF. Если это не там — это не JPEG, мусор это. Затем проверьте поля размера изображения, если они не там, мусор. Следующая проверка … и т. Д. Только примите это, если вы можете быть уверены, что это такое.
Есть и другие соображения — что делать, если изображение полностью достоверная фотография милого котенка — но с разрешением в гигапиксель. Ваше программное обеспечение для проверки должно быть достаточно умным, чтобы не пытаться его распаковать.
После того, как вы подтвердите, что загружаемое изображение является реальным изображением (или видео), возможно, вам нужно отрегулировать содержание изображения / видео. Это намного сложнее. Некоторые изображения являются незаконными в одних юрисдикциях, но совершенно законными в других. Вы не хотели бы делиться нелегальными изображениями.
Если вы скажете 3 раза неудачные загрузки подряд, возможно, вы могли бы заблокировать этот IP-адрес на несколько часов.
Других решений пока нет …