Включить mod_rewrite на сервере общего доступа Apache - PullRequest
1 голос
/ 10 декабря 2010

Я внес некоторые изменения в веб-сайт клиента.
Клиент постоянно подвергался атаке с использованием SQL-инъекции, и в данный момент URL-адрес содержит переменные, которые нужны веб-сайту (т.е. index.php? Filenmae = home.php),

Итак, защитив сайт как можно лучше, используя mysql_real_escape_strings и stripslashes, я переписал URL в Apache.

В настоящий момент сервер, на котором в данный момент находится веб-сайт, не поддерживает mod_rewrite (я проверял с помощью phpinfo), и это не принадлежащий нам сервер.Могу ли я что-нибудь сделать в моем файле .htaccess, чтобы включить mod_rewrite для этого сайта?

Ответы [ 4 ]

2 голосов
/ 10 декабря 2010

Если установлен mod_rewrite, вы можете настроить его в своем локальном .htaccess файле.

  • Создать файл с именем .htaccess в корневой папке вашего сайта.
  • Первая строкадолжно быть RewriteEngine On.
  • Вторая строка должна быть RewriteBase /.
  • После этого необходимо ввести правила перезаписи.

Если это не такЕсли вы не установлены, вам не повезло - ни один веб-хостинг не установит дополнительное программное обеспечение на ящик с общим хостингом только для одного клиента.

1 голос
/ 12 декабря 2010

Мик, лучшее решение для тебя - изменить свой код.Я предполагаю, что в вашем коде вы включаете указанное имя файла, например,

include $_GET['filename'];

Короче говоря, невозможно , используя mod_rewrite, что вы можете сделать это безопасным.

Тем не менее, вы можете очень легко сделать его более безопасным, проверив правильность имени файла, например,

$valid_filenames = array('home.php', 'foo.php', 'bar.php', /* etc... */);
if (!in_array($_GET['filename'], $valid_filenames)) {
    echo "Invalid request.";
    exit;
}
include $_GET['filename'];

Просто убедитесь, что вы подтвердили запрошенное имя файла до включая это, и вам будет намного лучше.

0 голосов
/ 27 октября 2015

Для общего хостинга, он действительно работает.

  • Создайте файл с именем .htaccess в корневой папке вашего сайта.
  • Первая строка должна быть RewriteEngine On.
  • Вторая строка должна быть RewriteBase /.
  • После этого, вставьте свои правила перезаписи.
0 голосов
/ 10 декабря 2010

Нет, вы не можете динамически загрузить mod_rewrite. Большинство хостинг-провайдеров имеют mod_rewrite, включенный на серверах Apache. Если они этого не делают, вы можете попросить их включить его. В противном случае, если вам действительно нужен mod_rewrite, рассмотрите возможность смены хостинг-провайдера.

В качестве альтернативы вы можете переписать URL в PHP.

  1. $_SERVER['QUERY_STRING'] можно использовать для получения детали после знака вопроса (http://example.com/file.php?this_part).
  2. Разделите его на предпочитаемый разделитель параметров (например, /, ;), используя explode('/', $_SERVER['QUERY_STRING'])
  3. Переберите значения и разделите их, используя предпочтительный разделитель значений (например, '=', ':')
  4. Перезаписать $_GET пустым массивом и поместить в него вновь созданные значения. Примечание: filter_input и связанные функции не работают на $_GET. Таким образом, этот метод будет не работать для filter_input.
...