如何处理脚本语言中的用户身份验证和错误修改?

时间:2009-09-02 00:03:32

标签: python security design-patterns authentication cracking

我正在使用Python / wxPython构建一个集中式桌面应用程序。其中一个要求是用户身份验证,我正在尝试使用LDAP实现(尽管这不是强制性的)。

该系统的用户将是机械和电气工程师预算,最大的问题是工业间谍活动。这是一个普遍的问题,泄漏通常是从非正式方式的底部发生的,这可能会带来问题。系统的设置方式是每个用户都可以访问所有信息,只能访问所需信息,这样除了顶层人员之外,没有人可以获得整个项目的货币信息。

问题在于,对于我可以想到的实现身份验证系统的每一种方式,Python的开放性使我至少想到一种绕过/从系统获取合理信息的方法,因为“编译”py2exe是我可以在Windows上对代码进行模糊处理的最接近的。

我并不是真的试图隐藏代码,而是让身份验证例程本身安全,使其成为一种访问代码并不意味着访问代码的能力应用。我想添加的一件事是访问例程的某种代码签名,因此用户可以确定他没有运行修改后的客户端应用程序。

我认为避免这种情况的方法之一是为验证创建C模块,但我宁愿不必这样做。

当然这个问题现在正在发生变化,并不仅仅是“有人能指出我如何构建一个在Python上运行的安全身份验证系统的正确方向吗?这样的事情已经存在吗?”,但是“你好吗?”强化脚本(Python)以防止错误修改?“

2 个答案:

答案 0 :(得分:3)

您的用户有多恶意?真。

究竟有多恶意?

如果您的用户是邪恶的反社会人员,并且无法信任桌面解决方案,那么不构建桌面解决方案。建立一个网站。

如果您的用户是普通用户,他们会通过在色情网站上安装病毒,恶意软件和键盘记录程序来搞砸环境:(a)学习Python(b)了解您的安全性如何工作以及(c)制作真诚的努力打破它。

如果您确实遇到桌面安全问题(即公共安全,军事等),请重新考虑使用桌面。

否则,放松,做正确的事,不要担心“脚本”。

C ++程序更容易破解,因为人们懒惰并允许SQL注入。

答案 1 :(得分:1)

可能:

  1. 用户将其凭据输入桌面客户端。
  2. 客户端对服务器说:“嗨,我的名字用户名和密码是密码”。
  3. 服务器检查这些。
  4. 服务器对客户说:“嗨,用户名。这是你的秘密令牌:......”
  5. 随后,客户端将秘密令牌与用户名一起使用,以“签署”与服务器的通信。