Как защитить HTML-навигацию - PullRequest
1 голос
/ 15 сентября 2009

Я пишу программное обеспечение для платформы электронного обучения. Валидация выполняется через PHP и MySQL. Весь контент загружается в папку, защищенную для прямого доступа с помощью HTACCESS, и контент предоставляется пользователям только через процедуру PHP, которая проверяет учетные данные учащихся, а затем открывает файл и отправляет его в браузер.

Это нормально для всех обычных типов контента (flash, gif, pdf и т. Д.), Но не может использоваться для контента, загружаемого как обычные HTML-страницы и графика.

Кто-нибудь знает, что было бы хорошей идеей максимально защитить этот тип контента? Я подумал о том, чтобы поместить его в произвольно названный каталог и связать с содержимым внутри фрейма, чтобы как можно больше скрыть адрес, но есть ли лучший способ сделать это?

Спасибо!

Ответы [ 3 ]

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

Я могу немного опоздать с этим, но на тот случай, если кто-то еще посмотрит на это ... Может быть, вы можете добавить этим файлам дополнительное расширение, а затем сообщить apache (или кому-либо еще), что php будет обрабатывать эти файлы , Например, у вас есть файл example.html, переименуйте его в example.html.answers. Затем, когда вам нужно передать файл 'name.html', вы фактически передаете аргумент 'name.html'. 'Answers'.

0 голосов
/ 15 сентября 2009

Вы можете использовать не-HTML (или нетекстовый), как предлагает cherouvim, и хранить HTML (весь текст на самом деле) в таблице базы данных. Тогда ваш скрипт download.php должен быть достаточно умным, чтобы запрашивать в базе данных файлы .html и т. Д.

Проблема в том, что любые изображения или другие ресурсы будут иметь неправильный URL (например, <img src="image.jpg"/> вместо <img src="download.php?image.jpg/>. Вам придется перезаписать ссылки на эти ресурсы в сохраненном HTML в базе данных - - вы, вероятно, могли бы сделать это с помощью интерпретатора XML (чтобы извлечь все теги img и другие теги, которые ссылаются на файлы) и регулярных выражений, чтобы определить, что необходимо переписать (например, переписать src="image.jpg", но не src="http://google.com/image.jpg".

Не самое элегантное решение, но я думаю, что оно сработает.

0 голосов
/ 15 сентября 2009

Одним из способов решения этой проблемы является создание промежуточного сценария, обслуживающего двоичный контент (на основе пользовательских привилегий) из защищенного местоположения.

Таким образом, типичный URL для загрузки файла вместо / resources / foo.pdf будет / download.php? Foo.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...