Prevenir Cortar/Copiar/Pegar (en el Navegador) con Ext.Net

Pasar de trabajar toda la vida con PHP a trabajar con .Net no ha sido fácil para mi... pero bueno igual es una herramienta más y finalmente terminamos adecuandonos a ellas para sacarle el mejor provecho.

Lo que si me ha ayudado bastante con esta transición es el uso de Ext.net (Freeware para proyectos open) una capa de trabajo que ayuda a compatibilizar las aplicaciones web para que sean Multinavegador.

Completamente recomendada si lo que vana desarrolla es aplicaciones web, pero si lo que van a hacer es páginas web no lo recomiendo porque como todo es dinámico entonces no las indexarán los buscadores.

A continuación el código fuente a usar en Ext.Net versión 2:

Bloqueo por teclado (dentro de las etiquetas <html>):
    <ext:KeyMap runat="server" ID="kmNoCutCopyPaste"
        Target="={Ext.getBody()}"
        DefaultEventAction="StopEvent" >
        <Binding>
            <ext:KeyBinding
                Ctrl="true"
                DefaultEventAction="PreventDefault"
                Handler="return false;">
                <Keys>
                    <ext:Key Code="X" />
                    <ext:Key Code="C" />
                    <ext:Key Code="V" />
                </Keys>
            </ext:KeyBinding>  
        </Binding>
    </ext:KeyMap>
    <ext:KeyMap runat="server" ID="kmNoCutCopyPasteAlternative"
        Target="={Ext.getBody()}"
        DefaultEventAction="StopEvent" >
        <Binding>
            <ext:KeyBinding
                Shift="true"
                DefaultEventAction="PreventDefault"
                Handler="return false;">
                <Keys>
                    <ext:Key Code="DELETE" />
                    <ext:Key Code="INSERT" />
                </Keys>
            </ext:KeyBinding>  
            <ext:KeyBinding
                Ctrl="true"
                DefaultEventAction="PreventDefault"
                Handler="return false;">
                <Keys>
                    <ext:Key Code="INSERT" />
                </Keys>
            </ext:KeyBinding>  
        </Binding>
    </ext:KeyMap>

Bloqueo por Mouse (Javascript):
// Desactivar botón secundario solo en campos de texto
Ext.onReady(function () {
    Ext.get(window.document).on('contextmenu', function (e) {
        if (e.target.type == 'text') {
            e.stopEvent();
        }
        else {
            e.preventDefault();
            return false;
        }
    });
});

Este tipo de controles se solicitan mucho en los requerimientos, pero sinceramente solo sirven para usuario simples, pero para cualquiera con un poco de conocimientos saltarlos es demasiado fácil, por lo tanto no deben ser considerados como restricciones de seguridad. Les recomiendo que dejen esto bien claro a quién lo solicite, para evitar malos entendidos.

Si algún día no pueden usar Ext, entonces les recomiendo este "Handling Keyboard Shortcuts in JavaScript" (Licencia BSD) que también me ha funcionado muy bien. La única diferencia es que con Ext se puede indicar un contexto donde aplicarlos (en este caso se usa en todo la aplicación), por ejemplo solo en una ventana o en un campo, mientras que el de JavaScript toca hacer manualmente la implementación del contexto habilitando y deshabilita.

Sueter... que con Ext.Net es fácil.

Por: Camilo Martinez [€quiman]

Comentarios

Entradas populares