美文网首页LinuxLinux学习之路
APUE读书笔记-18终端输入输出(12)

APUE读书笔记-18终端输入输出(12)

作者: QuietHeart | 来源:发表于2020-09-05 17:55 被阅读0次

getpass函数的调用

下面的代码调用getpass并且打印我们所输入的,以便我们可以验证ERASE和KILL字符是可以工作的(因为它们需要在canonical模式)。

#include "apue.h"
char    *getpass(const char *);
int main(void)
{
    char   *ptr;

    if ((ptr = getpass("Enter password:")) == NULL)
        err_sys("getpass error");
    printf("password: %s\n", ptr);

    /* now use password (probably encrypt it) ... */

    while (*ptr != 0)
        *ptr++ = 0;      /* zero it out when we're done with it */
    exit(0);
}

当一个调用getpass的应用程序使用明文密码的时候,应用程序应该在内存中将它尽早清除以杜绝安全隐患。如果应用程序会产生core文件,其它程序可能会读取到相应信息;或者如果有些应用程序可以读取我们内存的时候;这都会导致我们的明文密码被读取到。(这里的明文"cleartext",意思是我们在输入提示处输入的并且通过getpass被打印出来的密码。大多数UNIX系统程序会接着将这个明文的密码变成一个"加密的密码"。例如,password的pw_passwd成员就包含了加密的密码而不是明文的密码)。

译者注

原文参考

参考: APUE2/ch18lev1sec10.html

相关文章

网友评论

    本文标题:APUE读书笔记-18终端输入输出(12)

    本文链接:https://www.haomeiwen.com/subject/lemnjktx.html