如何禁用查看源代码和检查元素功能

3
如何禁用/查看源代码/检查元素,ctrl + u ctrl+shift+I f12 菜单栏和右键,还有 ctrl + s ctrl p ctrl+v ctrl+a ctrl+c 和拖动选择页面,请尽可能回答所有部分,我更喜欢使用JavaScript数组键码或HTML,不要使用PHP或其他语言。此外,我想阻止在我的网站上使用iframe,例如谷歌等某些网站。
据我所知,无法完全禁用查看源代码和检查元素,因此我希望对代码进行缩小,并回答其余问题。

编辑:

我自己解决了很多问题,我使用onkeydown返回false来禁用所有键,仍需要数组,我通过强制浏览器打开窗口来禁用检查元素菜单栏window.open,但仍需要右键,但是我想添加一个自定义右键菜单,我禁用了禁用Javascript的可能性,以防止使用noscript函数重定向的键块。我仍然需要拖动和选择部分。我仍然希望找到更好的方法来解决它...也许只需缩小代码或加密它。如果有人需要我使用的某些代码,请回复。我只需要修复它。


4
你的目标是什么?你是想防止用户看到HTML中隐藏的内容吗?请记住,无论你在客户端添加了什么限制,你仍然会将整个页面交给用户的浏览器,他们可以用其他方法拆开它。 - Eric Dobbs
8
无论你做什么,任何用户都可以看到你的代码,这是不可能的。只要浏览器能看到的,用户也能看到。任何机密信息都需要保存在服务器上。 - Lennholm
1
代码加密或缩小体积怎么样? - Universal Omega
4
如果你压缩它,那肯定会更难阅读,但所有内容仍然存在。加密是毫无意义的,因为你必须在浏览器中解密代码才能使其运行。 - Lennholm
1
我认为这开始进入“努力是否值得”的领域了。这是在编码方面投入了大量的工作,但除非是非常随意的观察者,否则任何人都可以绕过它。如果您需要安全性,那么它不应该在客户端处理。而通过混淆实现安全性只会在您必须返回并编辑此代码时使事情变得更加困难。我建议更具体地解决您要解决的问题,也许有人可以建议更好的整体解决方案。 - Shawn
显示剩余6条评论
4个回答

3

无法防止用户检查在其计算机上运行的代码。归根结底,他们收到的HTML将以纯文本形式可读。您可以为大多数人造成麻烦,但这不是有效的安全措施 - 例如,Chrome扩展程序仍将运行,因此如果有人使用NoScript扩展程序,则会禁用所有JavaScript。

一个更好的选择是在服务器端处理逻辑,并仅向客户端发送他们需要了解/请求的信息。

有一些免费的JavaScript混淆器,例如https://javascriptobfuscator.com/。请记住,这不是一种安全的方法。


2
我通过使网站无法在没有JavaScript的情况下运行来防止了noscript的可能性。 - Universal Omega
3
不过这并不重要 - 想象一下,在一天结束时,你网页的全部内容都是以纯文本的形式传输给用户的。他们总是可以通过“查看源代码:URL”来查看你网页的内容,或者注入自己的内容,或在请求到达用户之前拦截HTTP请求。这是不可能的 - 客户端的安全根本就不是安全。 - JonLuca
3
即使客户端没有从你的主页请求,他们也可以轻松地伪造一个请求头部来冒充请求来源。这只是一个很容易被欺骗的请求头部。此外,大多数现代浏览器都不允许隐藏地址栏,因此无法欺骗用户。 - Lennholm
3
@javamaster,您可以在此了解如何阻止页面上的 iframe:https://dev59.com/questions/UGIj5IYBdhLWcg3w04Xd - Lennholm
2
关于使用数组自定义右键菜单和禁用按键代码的问题,您有什么想法? - Universal Omega
显示剩余2条评论

1

我的意思是,无论你如何屏蔽它,一个人都可以输入。

view-source:https://example.com

例如,我制作了一个网站,禁用了右键点击、ctrl命令,并在<noscript>标签中添加了一个meta标签,以便那些禁用JS的人无法使用该网站。但是,你仍然有那些好老的手和键盘。 - ACO_Tech

1

顶一下

对于那些说这不可能的人,你们怎么解释这个网站是如何做到的呢?

以下网站禁用了查看源代码、右键和开发者控制台。

我真的很感兴趣。

https://www.techgyd.com/contact-facebook-directly/6579/

编辑: 所有来自键盘的输入都已禁用,但是通过在URL前添加“view-source:”以使httpps://变为:

view-source:https://www.techgyd.com/contact-facebook-directly/6579/

让我能够看到。

如果您想知道他们是如何做到的,请查看他们的JS,原始复制/粘贴:

<script type="text/javascript">
        //<![CDATA[
        var show_msg = '';
        if (show_msg !== '0') {
            var options = {view_src: "View Source is disabled!", inspect_elem: "Inspect Element is disabled!", right_click: "Right click is disabled!", copy_cut_paste_content: "Cut/Copy/Paste is disabled!", image_drop: "Image Drag-n-Drop is disabled!" }
        } else {
            var options = '';
        }

        function nocontextmenu(e) { return false; }
        document.oncontextmenu = nocontextmenu;
        document.ondragstart = function() { return false;}

        document.onmousedown = function (event) {
            event = (event || window.event);
            if (event.keyCode === 123) {
                if (show_msg !== '0') {show_toast('inspect_elem');}
                return false;
            }
        }
        document.onkeydown = function (event) {
            event = (event || window.event);
            //alert(event.keyCode);   return false;
            if (event.keyCode === 123 ||
                    event.ctrlKey && event.shiftKey && event.keyCode === 73 ||
                    event.ctrlKey && event.shiftKey && event.keyCode === 75) {
                if (show_msg !== '0') {show_toast('inspect_elem');}
                return false;
            }
            if (event.ctrlKey && event.keyCode === 85) {
                if (show_msg !== '0') {show_toast('view_src');}
                return false;
            }
        }
        function addMultiEventListener(element, eventNames, listener) {
            var events = eventNames.split(' ');
            for (var i = 0, iLen = events.length; i < iLen; i++) {
                element.addEventListener(events[i], function (e) {
                    e.preventDefault();
                    if (show_msg !== '0') {
                        show_toast(listener);
                    }
                });
            }
        }
        addMultiEventListener(document, 'contextmenu', 'right_click');
        addMultiEventListener(document, 'cut copy paste print', 'copy_cut_paste_content');
        addMultiEventListener(document, 'drag drop', 'image_drop');
        function show_toast(text) {
            var x = document.getElementById("amm_drcfw_toast_msg");
            x.innerHTML = eval('options.' + text);
            x.className = "show";
            setTimeout(function () {
                x.className = x.className.replace("show", "")
            }, 3000);
        }
    //]]>
    </script>

或者直接从第86行开始看

希望能对你有所帮助。

我在“野外”网站上找到了这个脚本。如果网站上有任何iframe,您仍然可以右键单击iframe,打开检查器,并从那里导航到iframe之外。 - jrswgtr

1
document.onkeydown = function(e)
    {
        if(event.keyCode == 123)
        {
            return false;
        }
        if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0))
        {
            return false;
        }
        if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0))
        {
            return false;
        }
        if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0))
        {
            return false;
        }
    if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0))
    {
      return false;
    }
    }

e是一个键盘事件。e.[key]返回true,如果按下了键。

如果document.onkeydown返回false,则该键不计入。

此程序检测是否按下代码视图组合键并返回false

示例:如果按下ctrl、shift和'J',则返回false。


请解释代码的作用以及它是如何实现的。 - M-Chen-3
e是一个键盘事件。如果按下了键,则e.[key]返回true。如果document.onkeydown返回false,则该键不计入。此程序检查是否按下代码视图组合键并返回false。例如,如果按下ctrl、shift和'J'键,则返回false。 - AKK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接