Какой лучший способ защиты от атаки обхода пути?

Этот параметр сделает чистые URL-адреса дружественных SEO. Removing.php с видимым URL-адресом и гарантируя, что доступ к URL-адресу без .php будет по-прежнему отображать .php-файл. Мне не удалось найти другой ответ, который был достигнут на нескольких потоках.

Не забудьте включить функцию перезаписи. В Debian или Unbuntu linux будет работать

sudo a2enmod rewrite

и

sudo service apache2 restart

Измените соответствующий раздел ваш файл apache2.conf к следующему.

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule (.*) $1.php [L]
        RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
        RewriteRule ^ /%1 [NC,L,R]
</Directory>

Если вы используете .htaccess для перезаписи, убедитесь, что apache2.conf по крайней мере имеет эти опции.

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        RewriteEngine On
</Directory>

Наконец, при установке Apache вам может потребоваться также установить AllowOveride All в .conf-файл в / etc / apache2 / sites-available или / etc / apache2 / sites-enabled. Похоже, переписывание из файла apache2.conf, в отличие от .htaccess, выполняется быстрее.

37
задан skaffman 7 April 2015 в 02:39
поделиться

2 ответа

Если вы запускаете это на unix-машине (я не уверен, что в windows есть что-то подобное, но возможно), вам стоит обратить внимание на chroot. Даже если вам кажется, что вы нашли все способы, с помощью которых кто-то может получить доступ к нескольким каталогам, приятно, когда операционная система подтверждает этот факт.

(chroot заставляет '/' ссылаться на какой-то другой каталог, так что "/" может быть "/home/me/project", а "/.../.../..." все еще "/home/me/project".)

EDIT:

Существует системный вызов chroot, а также инструмент командной строки chroot. Я не знаю, есть ли в Java нативный метод, но ничто не помешает вам запустить свой сервер с помощью инструмента командной строки. Это, конечно, должно быть в дополнение к тому, чтобы сделать все возможное для предотвращения других манипуляций с путями.

2
ответ дан 27 November 2019 в 03:58
поделиться

Вы можете проверить разрешенные символы в именах файлов ( http://en.wikipedia.org/wiki/Filename ) и отфильтровать все недопустимые символы (белый список), и тогда вы можете быть конечно, у вас там есть имя файла.

0
ответ дан 27 November 2019 в 03:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: