我计划创建一个小型 Web 服务来托管在我的网站上,但是我想知道如何创建一个简单且安全的登录表单(用户名+密码)仅适用于一个特定的用户名和密码组合,而无需使用 SQL。这不必非常安全,但如果仅通过窥视源代码就能破解它那就太糟糕了。是否可以实现这一点?
我计划创建一个小型 Web 服务来托管在我的网站上,但是我想知道如何创建一个简单且安全的登录表单(用户名+密码)仅适用于一个特定的用户名和密码组合,而无需使用 SQL。这不必非常安全,但如果仅通过窥视源代码就能破解它那就太糟糕了。是否可以实现这一点?
您是否拥有某种服务器端脚本?JavaScript无法实现。
由于您说它不需要完全安全,因此可以使用哈希和盐来创建一些东西,这些东西不能通过查看源代码来“破解”。请注意,如果您没有通过https连接,则您的本地网络、ISP、政府等恶意用户将能够窃听通信并看到您传输明文密码。仅出于这个原因,密码不应在任何地方重复使用,其他人登录的影响应该很小。
以下是如何生成哈希的简单示例:
<?php
$salt = "can-be-anything";
$password = "password";
$hash = hash_pbkdf2( "sha256", $password, $salt, 1024, 0 );
echo $hash;
?>
5b24ad89b5e94c35537f6967b39cf294aa845f94440ebfdd3e857e4cf5f41d7e
。现在,当接收密码并比较两个哈希值时,您可以遵循相同的过程。如果减少迭代次数,则破解哈希值将更容易,但会降低服务器负载。
session_start()
并且你可以添加数据,比如用户名到 $_SESSION ($_SESSION["username"] = "Fin"
)。其他语言也会有类似的东西。然后你可以在 welcome.php 中加载该会话,如果你的数据不存在,你可以显示一个错误或重定向到登录页面。希望我对注释的格式理解正确。 - R3dclienthttps://github.com/google/google-api-php-client/blob/master/examples/idtoken.php
这里是另一个使用Facebook的例子:
谷歌和 Facebook 都为所有主要语言提供了 API,但如果您喜欢,也可以使用任何标准的 OAuth 客户端。甚至可以实现自己的客户端,实际上客户端相当简单。
password_hash
和 user_id
设置为非空并将 user_id 设为唯一索引(CREATE TABLE myapp.users (userid VARCHAR(255) UNIQUE KEY NOT NULL, hashed_password VARCHAR(255) NOT NULL)
)不需要太多的努力。 - NotGaeL