Ajax Files browser; Каковы хорошие практики

Я работаю над файловым браузером (очень легкий файловый менеджер, если хотите) на основе PHP и Javascript.

Я строю дерево с моими папками:

<ul id="treeview">
    <li><a href="#">Folder 1</a></li>
    <li><a href="#">Folder 2</a>
        <ul>
            <li><a href="#">Folder 2.1</a></li>
            <li><a href="#">Folder 2.2</a></li>
        </ul>
    </li>
    <li><a href="#">Folder 3</a></li>
</ul>

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

У меня есть этот код PHP, чтобы сделать это:

public function getContent($path)
{
    //fetch the content of $path directory
}

У меня есть этот код JS для обработки событий:

$('#treeview a').live('click',function(e){
    e.preventDefault();
    var folder = //here : get the path
    loadContentInPanel(folder);
});

Но я не знаю, как безопасно получить путь к выбранной папке. Должен ли я добавить его непосредственно в атрибут, как это?:

<li><a href="root/folder2/folder2.1/"> Folder 2.1</a></li>

В идеале я хотел бы, чтобы путь не был виден (по крайней мере, не читабельным) для конечного пользователя. Я думал создать ссылку с base64_encode(), но разве это хорошая идея?

Спасибо за ваши предложения.

2 ответа

Решение

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

<li><a href="root/folder2/folder2.1/"> Folder 2.1</a></li>

Будет в

<ul id="treeview">//root
    <li><a href="#">Folder 1</a></li>
    <li><a href="#">Folder 2</a> //folder2

Выполните все проверки безопасности с помощью функции getContent, и все будет в порядке.

Если вам просто нужно простое запутывание (любой разработчик сможет получить реальный путь в кратчайшие сроки), тогда base64_encode() - самый простой способ (при условии, что ваш путь не длиннее 600-700 символов).

Кстати, помните, что безопасность должна основываться не на обфускации, а на надежных проверках доступа к ресурсам, которым вы завидуете.

Другие вопросы по тегам