sytpb 发表于 2016-08-09 09:09

sscanf 或sprintf 如何把其中的password 过滤掉?


输出log 时,有类似下面信息,只是类似,前后格式不固定。

userauth,router,OnRouterMessage received : username: "songyantao" password: "e10adc3949b"type:xxx field1:yyyy ......


把password: "e10adc3949b” 给隐藏掉。

1:password: "e10adc3949b” --》 ********** 代替
2:password开始,后面信息都不要了


利用 sscanf sprintf 正则怎么搞,没弄出来,另外这是log输出公共函数,所以效率很关键。

xinglp 发表于 2016-08-09 09:23

你应该从调用日志输出密码的地方去入手, 而不是去更改日志函数。
你这样做违背正交化原则了

sytpb 发表于 2016-08-09 09:33

回复 2# xinglp


    你说的没错,现在是接到这样的需求,我也没辙。

sytpb 发表于 2016-08-09 09:33

回复 3# sytpb

就当考试题了。


   

hellioncu 发表于 2016-08-09 09:54

本帖最后由 hellioncu 于 2016-08-09 09:55 编辑


char *sub = "password: \"";
p = strstr(str, sub);
if (p != NULL)
{
    p += strlen(sub);
    while (*p != '\0' && *p != '"')
    {
      *p = '*';
         ++p;
    }
}
页: [1]
查看完整版本: sscanf 或sprintf 如何把其中的password 过滤掉?