用户身份验证脚本使用python运行程序

时间:2013-07-13 15:46:28

标签: python-2.7

我是python的新手,刚刚开始学习,我想创建一个简单的脚本来运行程序,通过验证用户,有效与否... 主要问题,我面临的是我有一个文件“用户”,其中我提到了所有有效用户, 所以我需要一个程序搜索用户在“用户”文件中给出的输入,如果找到则继续,否则“验证失败” 我试过的是......

fp = open(“users”,“r”)

表示fp.readlines()中的行:

 if "michel" in line :  # user michel is available in users file
    print "true"
 else :
    print "false"

它有效,打印'true'因为michel在文件中..但是当用户输入“mic”时...也打印出真......所以解决方案是什么......

2 个答案:

答案 0 :(得分:1)

首先,出于安全考虑,最好使用os.getlogin()来确定用户的登录名,而不是提示用户输入用户名。这将至少保证用户通过某种认证机制登录到达系统,这意味着他们已经知道并且已经知道了。一致的用户名。

所以如果你想把它变成一个函数你可以写:

def is_valid_user(username):
   fp = open("users", "r")
   for line in fp.readlines():
      if username in line:
        fp.close()
        return True
   fp.close()
   return False

然后您可以使用以下方法调用该函数:

import os
is_valid = is_valid_user(os.getlogin())
if is_valid:
   print("valid user")
else:
   print("invalid user")

现在和将来增加安全性的一些建议:

  1. 修改“用户”文件以包含由分隔符包围的名称,例如“:jonesj:”而不是“jonesj”,并搜索":" + username + ":" in line,以避免在用户“jones”当前的情况下出现误报登录并且用户名“jonesj”在您的“用户”文件中,但“jones”不是,并且您错误地将“jones”标识为授权用户(因为“jones”是字符串“jonesj”的子集)。
  2. 确保“用户”文件的权限设置为只读,以便用户无法将用户名添加到文件中以向自己授予权限。
  3. 将来某个时候,您可能需要考虑使用LDAP或Kerberos服务器或其他一些更正式的身份验证机制而不是“用户”文件。有很多用于许多身份验证后端服务器的python客户端库。

答案 1 :(得分:0)

您可以使用re确保整行匹配:

import re

    fp = open("users", "r")
    for line in fp.readlines():
        if re.match('^michel$', line, re.I):
            print "true"
        else :
            print "false"