Какие символы надо вырезать в GET запросах, при написании сервера ?
Доброго времени всем!
Пишу небольшой веб-сервер,
пытаюсь как то обеопасить его, и из-за незнаний думаю лучше спрошу, чем потом ...
Итак, если get запросы никак не парсить, то пользователь может получить любой файл в системе, например так:
В программе выставляю root-path, пусть будет /var/www/
добавляю к нему из get
GET /index.html HTTP/1.1
Получаем:
/var/www/index.html
Теперь при запросе
GET /../../etc/shadow HTTP/1.1
мы отдаем файл с паролями =)
Итак, т.к. папка в linux не может содержать / или null их нужно сразу вырезать. Двоеточие вырезать - ради безопасности. Итого три.
Какие символы я пропустил ? Имеется ввиду не только символы, но и байты 0-255
Почитайте статьи "sanitizing URL" и "sanitizing input data" - многое зависит от того, какому ПО в дальнейшем будут передаваться данные, полученные в URL