Exit(-1); } [...]
/*口令认证通过时允许用户访问*/ [...]
【问题1】(4分)
用户在调用gets()函数时输入什么样式的字符串,可以在不知道的原始口令“Secret”的情况下绕过该口令验证函数的限制? 【问题2】(4分)
上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路。
参考答案: 【问题一】
只要输入长度为24的字符串,其前12个字符和后12个字符一样即可。 【问题二】
gets()函数必须保证输入长度不会超过缓冲区,一旦输入大于12个字符的口令就会造成缓冲区溢出。
解决思路:使用安全函数来代替gets()函数,或者对用户输入进行检查和校对,可通过if条件语句判断用户输入是否越界。