2013-12-22 4 views
0

У меня есть сайт, который предоставляет доступ к контенту в различных формах (PDF, MP3, MP4 и т. Д.) Для аутентифицированных пользователей. Сайт разработан для меня сторонним разработчиком LAMP. Пользователи аутентифицируются приложением, используя имя пользователя/пароль, хранящиеся в базе данных MySQL. Они не аутентифицируются с помощью Apache, MySQL или любого другого механизма.Защита доступа к файлам Java-Script

В последнее время тест на проникновение сайта выявил несколько очевидных уязвимостей. Тот, который меня почесывает, - это требование аутентификации для загрузки файлов javascript. Очевидно, что браузеру необходим доступ к этому JS-контенту, чтобы приложение запускалось, и это означает публиковать хотя бы некоторые файлы.

Мои вопросы таковы: Есть ли способ предотвратить доступ пользователей, которые не вошли в систему, от доступа к определенным файлам?

Я видел решения, подобные версии .htaccess, предлагаемой для файлов содержимого. , например.

 Options +FollowSymLinks 
     RewriteEngine on 
     RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC] 

Если я дробить код JS в государственные/частные папки есть способ, чтобы обслуживать Java-скрипт, я такой способом, а не просто включить его оптом? Будет ли это работать для javascript?

Благодаря

ответ

0

Это звучит, как вам требуется отдельный путь для аутентификации только ... путь входа. Этот путь позволит загружать только публичные активы. Успешная аутентификация перенаправляет пользователя на ваш безопасный путь. Действие выхода из системы перенаправляет пользователя на путь входа в систему.

0

Если я разделил JS-код на общедоступные/частные папки, есть способ обслуживать java-script i таким образом, а не просто включать его в оптовую продажу? Будет ли это работать для javascript?

В authorize.php, psuedocode, проверьте авторизован и наличие файлов, возвращая частное над публикой для зарегистрированных пользователей

if $_SESSION['logged in'] && exists '/private/' . $_GET['file'] 
    print '/private/' . $_GET['file'] 
else if exists '/public/' . $_GET['file'] 
    print '/private/' . $_GET['file'] 
else 
    die 

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

+0

Спасибо. Я взял это и немного изменил его, и это сработало. Я не использовал файл .htaccess, но включил переадресацию в apache site.conf/Проверьте, что пользователь вошел в систему. Если это не так, остановитесь прямо там. 'code' if (! (Isset ($ _ SESSION ['user_id']) && $ _SESSION ['user_id']! = '')) die (" У вас нет доступа к этому ресурсу. "); #strip ведущий '/' из пути, а затем проверить, существует ли он $ relative_path = substr ($ _ SERVER ['REQUEST_URI'], 1); if (file_exists ($ relative_path)) readfile ('./private'. $ _SERVER ['REQUEST_URI']); else die («Файл не найден». $ Relative_path); – user3127522

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