2010-12-10 3 views
1

Я внесла некоторые изменения на веб-сайт клиентов.
Клиент постоянно подвергался атакам с использованием SQL-инъекции, и в настоящий момент URL содержит переменные, которые необходимы веб-сайту (т. Е. Index.php? Filenmae = home.php).Включить mod_rewrite На общем хостинге Apache Server

Итак, после обеспечения безопасности сайта я мог использовать mysql_real_escape_strings и stripslashes. Затем я пришел, чтобы выполнить переписывание URL-адресов в Apache.

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

+0

Я думаю, этот вопрос относится к serverfault.com. – netcoder

ответ

1

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

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

Эй приветствует ответ. Я говорил с хостинговой компанией, и они сказали, что могут переписывать URL, но вместо этого они используют Zeus (?). Поэтому я должен выяснить, как выполнить переписывание URL в этом сейчас. Кроме того, я принял ваш комментарий, и сейчас я его внедряю. Спасибо :) – mickburkejnr

+0

Я внедрил код в этот код, но мне сказали, что пользователь не может быть ограничен при добавлении страниц. На данный момент мы собираемся выпустить его с помощью функций mysql_escape_string и без mod_rewrite. Спасибо за вашу помощь :) – mickburkejnr

0

Нет, вы не можете динамически загружать 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. Loop через значение, и разделить тех, с использованием сепаратора предпочтительного значения (например, «=», «:»)
  4. Перезапись $_GET с пустой массив и поместить в него вновь созданные значения. Примечание: filter_input и связанные функции не работают на $_GET. Таким образом, этот метод будет не Работает для filter_input.
+0

Перемещение провайдеров, к сожалению, не является вариантом. Я отправлю их по электронной почте и спрошу их об этом. – mickburkejnr

+0

Кроме того, я делаю правильную вещь, используя mod_rewrite для предотвращения инъекций sql? – mickburkejnr

+0

№ Если вы видите mod_rewrite как безопасное решение для предотвращения инъекций SQL, вы совершенно ошибаетесь. Чтобы предотвратить SQL-инъекцию, всегда используйте правильное экранирование или подготовленные инструкции. – Lekensteyn

2

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

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

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

0

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

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