3

我开始使用 PHP,我认为编写自己的登录/注册脚本会给我一些不错的曝光率。但是,我看到的所有帖子都引用了诸如

“你不是安全专家,你不应该尝试这个”

我应该尝试吗?如果我不应该,你会推荐什么?

4

3 回答 3

2

自己尝试一些东西并没有什么坏处。只要您的登录/注册代码不会给利益相关者带来风险(在财务上?),您可能会在此过程中学到一两件事有关安全性的知识。

这里有一些文档可以帮助您开始了解 appsec(应用程序安全):

XSS 漏洞https ://www.owasp.org/index.php/Cross-site_Scripting_(XSS )

CSRF 漏洞https ://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF )

SQL 注入https ://www.owasp.org/index.php/SQL_Injection

于 2012-10-22T21:43:42.617 回答
1

登录和注册系统可能是您可以使用会话处理做的最基本的事情,所以这绝对是一个好主意。但是,我建议只使用带有用户名(无密码)的登录名。密码是一项棘手的业务,如果您不保护它们,可能会产生严重的影响。尝试使用仅使用用户名的登录系统会更安全,然后在您了解加密后添加密码。

于 2012-10-22T21:44:02.760 回答
0

“知道是不够的,我们必须申请”——李小龙

良好的安全实践只能通过在实际情况中应用来学习。

制作安全的登录和注册页面非常简单

  1. 获得良好的数据库表结构,例如表用户列用户名、名称、密码、电子邮件等

  2. 获取用户输入

  3. 如果您使用的是本机 mysql 数据库驱动程序,请清理用户输入以防止 SQL 注入。但更好的是,自学有关准备好的语句、MySQLi 或 PDO 等抽象层,使可移植性变得轻而易举。

  4. 散列您的密码。永远不要以明文形式存储您的密码,但在散列之前先对密码加盐。注意,散列!=加密。哈希实际上是不可逆的(尽管理论上是可逆的,并且有些像 Crc32 一样很容易发生冲突。哈希是例如MD5SHA256SHA512Bcrypt按它们的强度排序。

  5. 然后进行查询以存储这些值。确保用户名列设置为唯一。您不能让两个用户具有相同的用户名。

登录期间:

- 检查用户/密码组合的准确位置。

- 对于密码,通过您在注册期间传递原始密码的相同的盐哈希算法传递它。

- 设置会话变量以使您能够跟踪用户并确保他们在线。

于 2012-10-22T21:58:02.353 回答