Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

29 Марта, 2024, 03:13:00
 

 Защита от копирования информации с сайта.

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн demi urg

  • Модераторы
  • Случайный гость
  • *****
  • Сообщений: 30
  • Репутация. +0/-0
    • Просмотр профиля
В данной теме я попробую расписать методы защиты от копирования информации, показавшиеся мне наиболее интересными. Заодно и упомянув про их возможные плюсы и минусы.

Итак, первый метод целиком и полностью состоящий и яваскрипта, по сути, представляет из себя просто два яваскрипта, перехватывающих копирование, нажатие на правую кнопку мыши и так далее. Скрипты выглядят примерно следующим образом.
1й.
<script language=JavaScript>
 <!--
var message="Правый клик запрещен!";
///////////////////////////////////
 function clickIE4(){
 if (event.button==2){
 alert(message);
 return false;
 }
 }
function clickNS4(e){
 if (document.layers||document.getElementById&&!document.all){
 if (e.which==2||e.which==3){
 alert(message);
 return false;
 }
 }
 }
if (document.layers){
 document.captureEvents(Event.MOUSEDOWN);
 document.onmousedown=clickNS4;
 }
 else if (document.all&&!document.getElementById){
 document.onmousedown=clickIE4;
 }
document.oncontextmenu=new Function("alert(message);return false")
// -->
 </script>

Может быть подключён вот так
</script>
<script type="text/javascript" src="http://ufresh.ucoz.net/Nodelete/files01/copyprotect.js"></script>
Ну или полностью.
<script language=JavaScript>
function preventSelection(element){
  var preventSelection = false;

  function addHandler(element, event, handler){
    if (element.attachEvent)
      element.attachEvent('on'   event, handler);
    else
      if (element.addEventListener)
        element.addEventListener(event, handler, false);
  }
  function removeSelection(){
    if (window.getSelection) { window.getSelection().removeAllRanges(); }
    else if (document.selection && document.selection.clear)
      document.selection.clear();
  }
  function killCtrlA(event){
    var event = event || window.event;
    var sender = event.target || event.srcElement;

    if (sender.tagName.match(/INPUT|TEXTAREA/i))
      return;

    var key = event.keyCode || event.which;
    if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) ����� �������� �� 65
    {
      removeSelection();

      if (event.preventDefault)
        event.preventDefault();
      else
        event.returnValue = false;
    }
  }

  // �� ���� �������� ����� ������
  addHandler(element, 'mousemove', function(){
    if(preventSelection)
      removeSelection();
  });
  addHandler(element, 'mousedown', function(event){
    var event = event || window.event;
    var sender = event.target || event.srcElement;
    preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
  });

  // ����� dblclick
  // ���� ������ ������� �� �� ������� dblclick, ����� ��������
  // ��������� ��������� ������ � ��������� ���������
  addHandler(element, 'mouseup', function(){
    if (preventSelection)
      removeSelection();
    preventSelection = false;
  });

  // ����� ctrl A
  // ������ ����� ��� � �� ����, � ���� �� ���� ����������
  // ��� � ������ ��� �� ����� ������������� ������� �����
  // ������ ���� ��� � �� document, � �� �� �������
  addHandler(element, 'keydown', killCtrlA);
  addHandler(element, 'keyup', killCtrlA);
}

preventSelection(document);
</script>       
Благодаря тому, что администрация любезно предоставила мне возможность доступа к папке со скриптами, есть возможность создавать примеры работы того или иного скрипта. Так пример работы данного скрипта можно увидеть вот тут. Там же сейчас разрабатываю фишку, которая позволалиа бы его при желании выключать. Но, судя по всему, пока что мне это не удалось.
« Последнее редактирование: 26 Июня, 2013, 08:59:19 от demi urg »

Оффлайн demi urg

  • Модераторы
  • Случайный гость
  • *****
  • Сообщений: 30
  • Репутация. +0/-0
    • Просмотр профиля
По результатам проверки предыдущий скрипт вполне сносно зарекомедовал себя в плане надёжности и кроссбраузерности, исправно работая даже в ie. В плане веса он тоже занимает не много , вставлять его относительно легко...
Единственное что несколько мешает. Ибо с ним, например, не получится , если что , переключить кодировку. Или же, скажем, посмотреть свойства картинки.
В общем штука достаточно топорная, но вполне имеющая право на существование.

Мной была сделана (и испытана) простенькая модификация данного скрипта, которая позволяет с какой-либо служебной странички отключать для вас оный скрипт. Так как отключение происходит через сессии, то отключение действует только пока вы не азкрыли сайт   15 минут.
Выглядит оно вот так.
Подключение скрипта модернизируется с учётом необходимости проверки сессий (имейте в виду session_start(); должно быть, желательно, в самом начале документа).
session_start();
if (!isset($_SESSION['copy']) || ($_SESSION['copy'] == false)) {
echo '
<script language=JavaScript>
 <!--
var message="Правый клик запрещен!";
///////////////////////////////////
 function clickIE4(){
 if (event.button==2){
 alert(message);
 return false;
 }
 }
function clickNS4(e){
 if (document.layers||document.getElementById&&!document.all){
 if (e.which==2||e.which==3){
 alert(message);
 return false;
 }
 }
 }
if (document.layers){
 document.captureEvents(Event.MOUSEDOWN);
 document.onmousedown=clickNS4;
 }
 else if (document.all&&!document.getElementById){
 document.onmousedown=clickIE4;
 }
document.oncontextmenu=new Function("alert(message);return false")
// -->
 </script>
<script type="text/javascript" src="http://ufresh.ucoz.net/Nodelete/files01/copyprotect.js"></script>
';
}
А вот код отдельной странички с управлением (в нашем случае это вот эта).
session_start();
if (isset($_GET['copy'])) {
if ($_GET['copy']=='no' ) {
$_SESSION['copy'] = false;
echo '
<p>Возможность копирования отключена.</p>
';
}
else {
$_SESSION['copy'] = true;
echo '
<p>Возможность копирования включена.</p>
';
};
}
if (!isset($_SESSION['copy']) || ($_SESSION['copy'] == false))
{
echo '
<a href='.$_SERVER['PHP_SELF'].'?copy=yes>Включить возможность копирования.</a>';
}
elseif ($_SESSION['copy'] == true)
{
echo '
<a href='.$_SERVER['PHP_SELF'].'?copy=no>Отключить возможность копирования.</a>';
}
И всё. Проверить действие оного скрипта вы можете всё по той же ссылке. Как только администрация поделится со мной тем скриптом защиты от копирования, что тут стоял раньше - напишу и про него.

 

Краткая информация об империи