2009-09-15 3 views
1

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

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

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

Спасибо!

+0

http://stackoverflow.com/questions/830919/what-security-issues-appear-when-users-can-upload-their-own-files – marcgg

+0

что заставляет вас думать, что это не будет работать для загруженного контента? – longneck

ответ

0

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

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

+0

Да, я уже делал это для обычных файлов, но проблема в том, что сам контент состоит из HTML-страниц, которые нужно обслуживать напрямую. – 2009-09-15 19:05:35

+0

Зачем вам нужно обслуживать их напрямую? Почему бы просто не передать HTML через тот же скрипт PHP, который вы используете для других типов ресурсов? – timdev

+0

Будет ли это работать, учитывая ссылки и изображения в содержимом? Не пробовал, но просто решил, что это не будет ... – 2009-09-15 19:17:43

0

Вы могли бы служить не-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

Да, но все же кошмар для синтаксического анализа - представить кадры, встроенный SWF и т. Д. И т. Д. – 2009-09-15 20:03:35

1

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

Смежные вопросы