我正在构建一个需要用户身份验证和授权的网站。我最初的想法是使用Flask框架编写应用程序。但是,I learned that Flask doesn't have a built in authentication system。它确实有一个扩展名瓶登录,但我还没有得到任何关于这个扩展是否写得很好的确认。我已经读过很容易让身份验证错误。
切换到内置身份验证系统的Django或web2py这样的话可能是个好主意吗?
优秀的网络程序员通常会选择使用经过验证的真实身份验证系统而不是尝试推出自己的身份验证系统吗?
是否有一本很好的指南,展示了构建身份验证/授权系统的最佳做法?
谢谢你们!
答案 0 :(得分:6)
如果要为您的网站添加用户登录功能(即身份验证和授权),请使用现有框架。除非您是安全方面的专家,否则编写安全系统的概率接近于0.无论您编写的语言是什么,无论您使用何种框架,这都适用。
不幸的是,我看到人们回答这个问题的方法如下:“作为一个初学者,这不是那么难,代码很有趣。你需要一个存储数据的地方(比如一个mysql数据库)。你应该存储加密版本的密码等。“这个答案是完全不正确的。
有免费的身份验证框架,可以使用它们。例如,Django和web2py都有内置的身份验证系统。许多框架没有内置身份验证(例如Flask,webpy);这并不意味着你应该推出自己的框架。它只是意味着你应该找到第三方认证软件。对于Flask,有Flask-login。
所以,我原来问题的答案是:
1。)是,或集成经过验证的第三方软件系统。
2。)是的,最佳实践说不要写自己的认证系统。使用已经构建的那个。
3。)您不应该需要构建身份验证系统的指南,因为您不应该构建一个身份验证系统。但是,OWASP是一个很好的安全资源。
以下是摘要: 不要编写自己的身份验证系统。使用受信任的预构建身份验证系统。如果有人对可以与Python一起使用的身份验证系统有任何建议,请随时发布。