Как мы можем ограничить пользователя от сохранения веб-страницы? - PullRequest
5 голосов
/ 05 марта 2009

Как мы можем запретить пользователю сохранять страницу?

Пожалуйста, предоставьте несколько советов, чтобы отключить опции File-> Save and View Source

РЕДАКТИРОВАТЬ: Очевидно, что это не может быть сделано, и, вероятно, не следует пытаться. Но, возможно, более интересный вариант в этом вопросе: как сделать так, чтобы пользователю было достаточно сложно сохранить страницу в удобном для использования формате, чтобы это не стоило того? Вопрос не представляет ценности, но, скажем, мы защищали сайт подписки на статьи, где пользователь платит несколько сотен долларов в год за постоянный доступ к тексту.

Ответы [ 11 ]

54 голосов
/ 05 марта 2009

Поскольку страница была отправлена ​​клиенту, всегда найдется способ получить эту информацию. Попытка запретить пользователю делать это только расстроит его.

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

14 голосов
/ 05 марта 2009

В то время как лучший ответ - «Не делай этого», есть способы сделать это более трудным для них. А так как смысл этого сайта - ответить на вопрос, даже если он плохой, то лучший способ:

Сначала вам нужно открыть страницу в новом окне, где вы выключаете адресную строку, панель инструментов и все остальное. Это сделает так, что пользователь вообще не сможет легко попасть в меню «Файл». Для этого вам понадобится «всплывающая» страница, на которую пользователь загружается, а затем, когда он щелкает ссылку, он открывает всплывающее окно, которое обслуживает основное содержимое вашей страницы. Подробности о том, как создавать всплывающие окна без таких вещей, как панель инструментов, здесь: http://blazonry.com/javascript/windows.php

Затем вы захотите добавить несколько javascript на каждую страницу, чтобы пользователь не мог щелкнуть правой кнопкой мыши. Вот один из методов: http://javascript.about.com/library/blnoright.htm

Наконец, если вы не хотите, чтобы ваш код был написан на Javascript, то обфусцирование вашего кода - довольно эффективный способ сделать это. Они все еще могут видеть код, если у них есть много ноу-хау, но запутанный код будет гигантской болью, чтобы фактически интерпретировать. Там много обфускаторов; Вот бесплатный веб-сайт: http://www.javascriptobfuscator.com/

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

Обновление обновленного вопроса: Чтобы ответить на ваш новый расширенный вопрос, я бы сказал, что лучший способ выполнить то, что вы говорите, - это использовать формат, который поддерживает DRM. Adobe Acrobat, вероятно, будет лучшим выбором, потому что почти у каждого установлен ридер. Вы можете запретить сохранение файлов PDF на компьютер, чтобы их можно было загружать с веб-страницы только зарегистрированному пользователю. Пользователь все еще может сделать снимок экрана самого документа, который я не считаю предотвратимым (если только в Adobe Reader для этого не предусмотрена какая-то защита, что может быть), но он должен быть достаточным для большинства случаев использования.

9 голосов
/ 05 марта 2009

Не делай этого.

Серьезно, если пользователь может увидеть страницу в своем браузере, он может увидеть исходный код и / или сохранить его на своем компьютере.

Вы ведете здесь проигрышную битву.

4 голосов
/ 05 марта 2009

Это действительно пустая трата времени и ресурсов, чтобы попытаться сделать это в формате html, поскольку любой используемый вами метод может быть тривиально обойден.

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

  1. PDF - который может отключить сохранение и печать. Существуют расширения для большинства популярных веб-языков, которые напишут PDF на лету. В самом деле, вы можете просто пойти по пути DRM с Adobe и встроить документ

  2. Flash - скорее всего, через Flex, который можно использовать для написания универсального приложения для отображения текста и изображений. Преимущество Flash заключается в том, что настраивать ссылки проще, чем в pdf.

  3. Или что-то еще, пользовательский Java-апплет или даже плагин vrml и отображение текста в 3D!

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

4 голосов
/ 05 марта 2009

А как насчет кеша браузера? Его можно сохранить оттуда.

А как насчет экрана печати? Это также может сохранить страницу.

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

2 голосов
/ 05 марта 2009

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

1 голос
/ 06 марта 2009

Попробуйте javascript "кодирование" и запутывание.

Что-то вроде

if(document.location == 'mydomain.com') {
  content = getAjax('mycontent.xml');
  // content will hold something like 72, 94, 81, 99, ... - encoded ASCII codes
  document.write(String.fromCharCode(content));
}

Всегда будет возможно сохранить страницу, но для нетехнических парней будет сложнее заставить ее работать. Есть 2 защиты

  • доменное имя
  • преобразование ASCII

Это всего лишь псевдокод, но я думаю, вы поняли.

1 голос
/ 05 марта 2009

Это не должно быть проблемой, но если вы действительно не хотите, чтобы пользователь видел ваш код (javascript, css или html) по какой-то причине, вы можете использовать какой-то инструмент запутывания, который делает код менее читабельным.

0 голосов
/ 01 декабря 2018

добавить их к наборам кодов в теге script

document.addEventListener('contextmenu', function (e) {
                e.preventDefault();
});

document.onkeydown = function (e) {
                return false;
};
0 голосов
/ 20 июня 2009

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

Ничего сложного: добавьте на каждую страницу: «Личное имущество Джона Стилера, компании Zetabeta, оплачено кредитной картой 756890987654, адрес для выставления счета ..., срок действия подписки истекает 12/20».

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

...