首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLineEdit密码安全

QLineEdit密码安全
EN

Stack Overflow用户
提问于 2013-11-18 20:41:36
回答 2查看 1.2K关注 0票数 3

在我的应用程序中,用户在QLineEdit中键入他的密码。QLineEdit在口令回显模式下工作。

应用程序必须在不再需要密码时将其从内存中清除。

QLineEdit是否确保在释放所有内部内存缓冲区之前将其清除?我在文档中找不到这样的信息。

如果QLineEdit不清除其内容,那么实现此类行为的最简单方法是什么?我希望尽可能多地重用QLineEdit功能,而不是从头开始实现我自己的密码编辑控件。有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-19 02:55:14

请注意,即使在调用setText({})不是完全安全的情况下-如果您的应用程序被换出,字符串也可能被写入交换空间。防止这种情况的唯一方法是自己为lineEdit的内部字符串分配内存,并对其调用mlock()以防止交换。为此,您需要编写自己的lineEdit

此外,在将运行时内省工具(如Gammaray )附加到应用程序时,文本非常容易弄清楚,因为它是一个普通的QObject属性,并以混淆方式存储在内存中。

此外,通过查看QWidgetLineControl::internalSetText (请参阅the code)的实现,似乎可以将行编辑文本用于辅助功能接口,除非辅助功能支持没有编译到Qt中,否则每个人都可以访问该接口。

因此,根据您的安全级别,您确实需要自己的实现。

票数 6
EN

Stack Overflow用户

发布于 2013-11-18 21:04:38

我觉得给你打电话

代码语言:javascript
复制
QLineEdit::setText("");

就能完成这项工作。正如Qt documentation所说:

设置此属性将清除选定内容,清除撤消/重做历史记录,将光标移动到行尾,并将modified属性重置为false。

相反,调用QLineEdit::clear()将仅清除文本,但是撤消/重做堆栈仍将包含以前的文本。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20048081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档