-
2021-09-14 21:15:29
- 系统:win10
- IDE:VS2019
说明
调试动态库代码时没有控制台来显示日志,用以下代码可以开启控制台
AllocConsole(); freopen("CONOUT$", "a+", stdout);
更多相关内容 -
在当前目录打开控制台(OpenCommand)
2014-03-02 09:10:06在windows目录的右键菜单中添加“打开控制台”菜单项,单击能够打开控制台程序,并能自动切换到当前目录。 -
阻止用户打开控制台
2021-09-29 20:04:19首先得知道用户能通过什么方式打开控制台,一个是通过键盘事件,一个是鼠标右键。 那就通过禁止键盘的f12事件: 漏洞:浏览器设置其他快捷键打开控制台,没了。 禁止右键事件: 识别打开 这时候问题来啦,有个聪明...实现
一、阻止打开
首先得知道用户能通过什么方式打开控制台,一个是通过键盘事件,一个是鼠标右键。
那就通过禁止键盘的f12事件:
漏洞:浏览器设置其他快捷键打开控制台,没了。禁止右键事件:
识别打开
这时候问题来啦,有个聪明的小伙说那我先打开控制台,再进网站呢。
好问题,那就得让程序判断你有没有打开控制台:通过浏览器宽高和可视宽高对比
这种是通过获取浏览器的可视区域宽高(整个浏览器)
window.innerWidth / window.innerHeight
和浏览器中项目显示的宽高(包括书签栏)window.outerWidth / window.outerHeight
之间的差值来判断的,由于书签栏可能没显示,所以这个差值是有容错范围的,所以这个判断并不太准确,一般为200差值内就算没打开。
漏洞:这里的漏洞就特别大了,如果打开toggle device toolbar,或者设置控制台从新窗口打开,这个方法就无效了。实际上很多小小付费网站都是通过这种方法来阻止用户打开f12的。
通过控制台特性
1、 改写对象
toString
这个方法好像只有给予chrome内核有效(我只在
firfox
、chrome
和ie
测试过):如果控制台输出的是对象,则保留对象的引用,每次打开控制台的时候,如果对象类型是function、date等(以前还有regexp,现在已失效),都会重新调用一下对象的toString()
方法,将返回结果打印到控制台上。经过测试:
步骤一 步骤二 步骤三 结果 声明对象 重写 toString
打印对象 toString
会在开始时多运行一次,所以可以使用一个计数器来判断哪次有效声明对象 打印对象 重写 toString
如果初始化时控制台是开启状态,会检测不到这一次的状态 声明对象 重写 toString
打印对象(这里的对象不做为第一个参数) 可以成功监测每一次控制台状态 漏洞:只有对
chrome
内核的浏览器生效;或者重写console来处理,在地址栏输入以下代码再打开目标页面:
不过这个方法也可能失效,比如项目重写了console
方法,使用_console
来实现打印,也有可能就不是用console.log
来打印的,可能用console.info
、console.error
等2、监听
dom
属性浏览器在打印dom元素的时候,如果控制台处于关闭状态,不会获取元素属性,但是如果控制台处于开启状态,就会自动获取dom属性,从而触发监听事件
漏洞:不支持firfox
3、通过时间差
可以通过在代码里面加上
debugger
断点,这样要是用户打开控制台代码会在断点停止执行,会有一个时间差,有点烦的是由于项目eslint
规定不能写debugger
,还要加上no-debugger
的注释
漏洞:如果设置浏览器断点不停止;或者有些项目在webpack
配置drop_debugger: true
,那debugger
也会无效;通过
debugger
这种方式还有一种方法是通过调用栈溢出这种思路来实现,如果打开控制套并设置断点不停止,这时候会因为一直调用某个方法导致调用栈溢出。所以,们可以设置一个间隔2000ms的定时器来不断执行某个方法,这样当控制台开启时,不论是否取消debugger调式,都会使页面卡住:
总结
我个人针对阻止用户打开控制台是结合2和3一起使用的。
虽然前端谈安全本身就是个伪命题,但是为什么还要做呢?
个人觉得,第一是能有效的提升前端被破解的门槛,二是能从安全的角度对项目进行思考优化。
反正,我做安全首先都会去实践尝试其他网站的防范方法,并尝试破解,成功的话还是挺有成就感的。 -
Qt打开控制台输出
2022-03-05 14:54:28 -
Steam如何打开控制台
2022-05-25 10:41:13Steam如何打开控制台1、运行Steam
2、Win+R打开如下界面
3、在命令窗口输入:Steam://nav/console,点击确定
4、操作完毕后就可以在Steam上看见console选项卡了!
-
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2021-01-21 18:31:04以上这篇解决pyinstaller打包发布后的exe文件打开控制台闪退的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:pyinstaller打包程序exe踩过的坑... -
监视浏览器是否打开控制台
2021-09-03 15:51:56监视浏览器是否打开控制台 之前朋友在讨论中提出问题:”怎么监视浏览器控制台是否打开“,浏览器没有对应的api,当时第一个想法就是监视窗口大小,后面反应过来用户提前打开了呢?当然下面这个方法也不能监视用户... -
vs2022怎么打开控制台?
2022-03-01 10:52:03vs2022怎么打开控制台? 打开visual studio 2022,选择菜单 视图》输出 显示输出来源(S): 选择生成 -
ubuntu系统打开控制台终端
2022-03-04 18:01:41按Alt+F2快捷键打开命令输入框,输入“gnome-terminal”命令,然后按回车键即可打开终端。 后续再次打开按Alt+F2就会有历史记录,点击“gnome-terminal”即可。 -
vue/Vue禁止打开控制台/前端禁止打开控制台方法/禁用F12/禁用右键/禁用ctrl+shift+i/禁止预先调试打开...
2021-10-15 15:54:13需求:要求用户不能在网页上打开控制台查看源代码,不能查看接口请求---开发人员可以打开控制台 解决问题思路: 1,禁用所有打开控制台的方法 2,在定时器里判断浏览器窗口宽高和页面宽高的差值,来断定用户有没有打开... -
解决谷歌浏览器打开控制台有延迟
2022-04-18 21:42:31在mac的谷歌浏览器中,打开控制台有一到两秒钟的延迟,或者更久事件,如何解决呢? 打开控制体啊 下拉找到语言 把uk 切换为us 4. 关闭控制台,搞定 重新打开控制台再试试,倍儿快!!! ... -
Mac系统下vscode快捷键打开控制台?
2021-10-30 00:52:10调试控制台:command+shift+Y 终端: control+` -
idea如何调出控制台(附eclipse如何打开控制台)
2022-02-22 10:52:55idea打开视图窗口的方式和我们以前使用的eclipse还是有很多共通之处,只要是视图、窗口问题的显隐、调整都问题都可以去找【View】。 -
QT 打开控制台输出
2020-11-03 09:49:58PRO文件里添加以下代码: CONFIG += console 便可以在控制台打印cout的信息 -
安卓chrome打开控制台_如何在Google Chrome中打开和使用JavaScript控制台?
2020-10-05 05:07:55安卓chrome打开控制台Google Chrome browser provides a JavaScript Console. This console is directly connected to the currently active DOM or web page where it can use this page functions, libraries, and... -
手机调试打开控制台方法vconsole
2022-01-06 16:44:37手机调试网页,看不到控制台,无法获取接口相关信息,引入vconsole可以实现 代码演示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <... -
IE8,不打开控制台提示页面上有错误,打开控制台运行正常
2019-01-08 17:13:15js里面有使用console.log()进行调试,去除即可 -
phpstorm如何打开控制台
2021-09-10 14:11:49目录 phpstorm如何打开控制台 或者点击浏览器(前提配置php 环境,apache ) phpstorm如何打开控制台 或者点击浏览器(前提配置php 环境,apache ) -
微信打开控制台 log
2020-04-27 17:32:13以为自己只是不想找对象,后来发现我tm是根本找不到 前端QQ群: 981668406 在此附上我的QQ: 2489757828 有问题的话可以一同探讨 ...直接在微信里面打开地址: http://debugx5.qq.com 设置里面的信息,勾选相关条件 ... -
C#窗体程序打开控制台
2020-10-21 13:32:18public Form1() { InitializeComponent(); } [System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError = true)] [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.... -
打开控制台
2013-08-10 22:12:18从当前选中的目录打开控制台。并且自动cd到当前选中的目录。 -
虚拟机---虚拟机打开控制台
2021-09-27 23:00:32打开控制台:Ctrl + Alt + F5 关闭控制台:Ctrl + Alt + F1 -
vs2015 调试时打开控制台
2021-02-04 15:49:51打开项目属性->通用属性->链接器->系统->子系统,在其中选择即可切换。 -
小程序webview嵌套h5后如何打开控制台
2021-12-02 16:46:56小程序weview嵌套h5后,可直接在开发工具打开h5的控制台,如下图,开发工具会识别,如果是h5页面,在页面的右下角会有一个类似爬虫的标识,点击即可打开h5的控制台,而原生页面是没有的 图1:h5页面的开发工具 图... -
linux下docker安装rabbitmq无法打开控制台
2022-01-05 21:14:43linux下使用docker安装rabbitmq后,无法访问控制台,已解决 一、安装rabbitmq,并启动 1.拉取镜像 docker pull rabbitmq 2.启动容器 docker run \ -e RABBITMQ_DEFAULT_USER=root \ -e RABBITMQ_DEFAULT_PASS=... -
VScode 插件打开控制台的快捷键和断点调试的快捷键
2021-07-05 15:54:22VScode 插件打开控制台的快捷键 一、打开控制台 command + option + I 二、打开 DEBUG CONSOLE command + shift + Y 三、打开 webview 控制台 command + shift + p 输入 open webview Developer tools 四、VScode... -
谷歌浏览器按F12或者右键检查打开控制台很慢
2021-12-30 11:02:38最近突然发现谷歌浏览器按F12或者右键检查打开控制台很慢,明明之前很好用的,实在没找到原因,最后转用IE浏览器,发现他还是没有谷歌好用,只能找办法解决,最后发现解决办法很简单,具体原理是啥我也不清楚 ... -
UE-c++ Rider打开控制台窗口
2022-03-06 21:55:26点击 Run/Edit Configurations 勾选 Use external console 控制台在程序不阻塞的情况下会直接关闭,请添加 system(“Pause”); 效果如图 -
打开控制台(cmd命令行)的五种方式
2021-01-12 19:40:11在任意文件夹(比如桌面)下:Shift按键+鼠标右键,点击“在此处打开 Powershell 窗口(S)”,即可进入。 优点: 比较快。 自动切换到当前路径,不需要cd手动切换。 通过开始菜单或Win按键 点击开始菜单(或键盘...