gpt4 book ai didi

qt - QML应用程序和安全性-有吗?

转载 作者:行者123 更新时间:2023-12-03 03:45:44 27 4
gpt4 key购买 nike

我刚刚做出了一个令人震惊的发现-部署QML应用程序时,项目中使用的所有“库存” QML组件都以裸QML文件的形式部署,直接在文件系统中可见,甚至没有作为用户隐藏在应用程序qrc二进制文件中。是QML文件。这意味着任何人都可以打开那些人类可读的文件,并写下他需要执行的任何代码。而且,即使从QML,也可以对QObject派生类型进行大量的自省,您可以向下搜索对象树,分析应用程序结构,遍历对象的方法和属性。恶意黑客的空间很大。您甚至不必挖掘一些低水平而被忽视的漏洞-一切就在这里。

是否有任何安全功能可以防止这种情况发生?是否有可能检查已部署的QML的源代码是否有修改,甚至与校验和一样基本?如果没有,是否有任何手动实施安全性的策略?似乎部署过程已经设定好了,就是这样,没有定制空间吗?

还要注意,从我对this question的调查来看,似乎可以重写QML文件的解析方式,但是即使采用这种费劲的方法,该如何与现有的部署方案堆叠在一起?有没有一种“漂亮”的方法来定制部署过程,尤其是考虑到不同目标平台之间的差异很大时。

问题不是关于保护我的代码免遭窃,而是关于保护Qt的代码免遭篡改。



由于许多人似乎在理解手头的问题上存在问题,所以让我以隐喻的形式来形容,希望可以更容易理解。可以选择所有的锁,但这并不意味着如果您的门没有任何锁,这不是问题。对于不能锁门的安全问题并非没有根据,因为锁不是万无一失的。

是的,所有应用程序都可以被黑客入侵,但是这是否需要二进制程序的逆向工程,发现一个被忽视的低级漏洞以及将其利用到您的恶意目的的方法,或者与打开一个恶意程序一样琐碎,这在世界范围内都不同。文本文件,然后只写您想发生的事情。

这不是典型的,固有的和不可避免的漏洞,这要由开发人员尝试尽可能地减少,这是一个巨大的漏洞,这种情况是Qt针对QML应用程序的部署策略中设计存在的。解决这个问题不仅对开发人员不构成责任,而且Qt的许可方案可能会完全阻碍开发人员这样做。当在框架级别存在不安全并且不允许您解决此问题时,实现安全有点困难。

由于某些原因,人们似乎错过了这种固有的缺乏安全性的逆向工程方面。在黑客开始以用户为目标之前,他必须先开发黑客。这是最不安全的地方。毫无疑问,黑客将拥有对自己计算机的admin / root访问权限,因此,没有任何保护QML源免于写入的方案将起作用。使用QML引擎,可以灵活地解释文本文件,这使黑化应用程序变得非常容易,比利用可执行二进制文件要容易得多。从那时起,还有其他途径来危害用户的系统(并且所有广泛使用的系统都是易受攻击的),但至少从单个应用程序开发人员的角度来看,要指出的是,仅受危害的系统并不会危害用户的数据。在我的应用程序中,因为它是受保护的存储在文件系统中,但是却在应用程序中公开。使QML引擎如此不安全并且容易将任何代码注入到应用程序中-这是这里的大问题。在用户系统上破坏QML文件的容易程度是次要的,并且是次要的问题。最大的问题是QML如何轻松地进行黑客的初步开发。

最后,某些人的工作围绕Qt的偏见是可以理解的,他们轻描淡写的缺陷的“专业责任”也是可以理解的,这可能会妨碍其采用,从而阻碍他们的业务,即使是专业人士,在安全性和安全性方面也极不道德。用户的隐私受到威胁。投资于破坏风险并不是改善产品声誉的最佳方法,这些风险不会仅仅因为您否认这些风险而消失,但是,如果您对产品进行改善,这些风险就会消失。承认风险并致力于解决这些风险,肯定比一时成为头条新闻的潜在高调数据泄漏要少很多尴尬。

最佳答案

With Qt 5.7,Qt的静态构建(使用-static配置Qt)将导致属于Qt模块的QML文件通过资源系统构建到插件中。例如,考虑Qt Graphical Effects模块中的relevant change。这是更改前qtbase/qml/QtGraphicalEffects的目录列表:

Blend.qml
BrightnessContrast.qml
Colorize.qml
ColorOverlay.qml
ConicalGradient.qml
Desaturate.qml
DirectionalBlur.qml
Displace.qml
DropShadow.qml
FastBlur.qml
GammaAdjust.qml
GaussianBlur.qml
Glow.qml
HueSaturation.qml
InnerShadow.qml
LevelAdjust.qml
LinearGradient.qml
MaskedBlur.qml
OpacityMask.qml
private
qmldir
RadialBlur.qml
RadialGradient.qml
RectangularGlow.qml
RecursiveBlur.qml
ThresholdMask.qml
ZoomBlur.qml


后:

private
qmldir
qtgraphicaleffectsplugin.lib
qtgraphicaleffectsplugin.prl
qtgraphicaleffectsplugind.prl


这是一种使访问Qt模块的QML文件更加困难的方法。

关于qt - QML应用程序和安全性-有吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com