Можно ли заблокировать доступ браузера к текстовому файлу, но разрешить доступ к JavaScript? - PullRequest
0 голосов
/ 10 мая 2018

Следующий код, расположенный внутри файла HTML, считывает содержимое локального файла .txt в строковую переменную Javascript:

<script>
    window.onload=function(){
    var allText;
    readTextFile("/files/Textfile.txt");

    function readTextFile(file)
    // https://stackoverflow.com/a/14446538/8840617
    {
        var rawFile = new XMLHttpRequest();
        rawFile.open("GET", file, false);
        rawFile.onreadystatechange = function ()
        {
            if(rawFile.readyState === 4)
            {
                if(rawFile.status === 200 || rawFile.status == 0)
                {
                    allText = rawFile.responseText;
                }
            }
        }
        rawFile.send(null);
    }
}
</script>

Код JavaScript продолжает анализировать этот текст для извлечения определенной подстроки из allText, а затем, наконец, эта подстрока показывается пользователю в HTML.

Проблема в том, что любой посетитель может найти путь к текстовому файлу, щелкнув «Просмотр источника» в своем браузере, а затем он может перейти к текстовому файлу в своем браузере, чтобы просмотреть файл в полном объеме.

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

Итак, можно ли запретить посетителям просматривать файл .txt, при этом позволяя моей веб-странице .html импортировать данные из файла .txt в виде строки?

Если это невозможно, как мне достичь этого эффекта, точно?

1 Ответ

0 голосов
/ 10 мая 2018

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

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

...