Php 这个登录系统足够安全吗?
在查看我们的登录系统以添加一些新功能后,我发现它不是很安全。auth cookie是原始的Php 这个登录系统足够安全吗?,php,security,cookies,authentication,Php,Security,Cookies,Authentication,在查看我们的登录系统以添加一些新功能后,我发现它不是很安全。auth cookie是原始的用户id、戳记、版本、密码和cookie id的加密,至少我可以说我不是以前的开发人员那样做的。(是的,我知道密码应该保存为数据库中的散列而不是纯文本。最初的开发人员就是这样做的,我还没有解决这个问题。) 所以我在这里和网上读了很多关于安全登录和安全cookie的书。我可以看出不安全地做这件事是多么容易 关于网站 这是一个电子商务网站,也有很多社区内容(留言板、图库) 登录页面被强制使用HTTPS 所有帐
用户id、戳记、版本、密码和cookie id的加密,至少我可以说我不是以前的开发人员那样做的。(是的,我知道密码应该保存为数据库中的散列而不是纯文本。最初的开发人员就是这样做的,我还没有解决这个问题。)
所以我在这里和网上读了很多关于安全登录和安全cookie的书。我可以看出不安全地做这件事是多么容易
关于网站
- 这是一个电子商务网站,也有很多社区内容(留言板、图库)
- 登录页面被强制使用HTTPS
- 所有帐户页面和签出也强制使用HTTPS
- 更改密码或电子邮件地址需要当前密码
以下是我的计划:
目标:
- 可以在多个位置登录
- 需要重新登录商店的安全部分,仅持续30-60分钟,cookie设置仅安全
- 查看所有当前登录的选项
- 在所有位置注销的选项
- 后端登录是安全的,持续时间更长。办公室外的有限登录
user gets page:
no auth:
have user sign in with username & pass
create new token
expires =
https on store: 30-60 min
backend in office: 5 days
backend remote: 30-60 min?
regular without remember me: session or 24 hours?
regular with remember me: 30 days
insert into user_session
set cookie
auth:
token in db:
set uid
generate new token, new expires, insert into DB, remove old?
upddate cookie
token not in db:
logout, requre sign in
table user_session:
uid
uid_as (for being 'logged in' as another user, admin feature only)
token
type
ip address
expires
stamp
cookie value: token|hash(token + user id, server key)
从我所读到的一切来看,这就是我想到的。但我确实觉得我错过了什么。除了在整个网站上使用HTTPS之外,我的计划或使其更安全的方法是否存在任何问题?(它目前会引起一些问题,但我稍后会对此进行研究)听起来是向前迈出了一大步-您的cookie值仍然可能被其他用户劫持,特别是如果用户没有注销
(销毁有关会话的db信息)。只是一些需要注意的事情
<>如果您想同时支持多个登录,则需要考虑所有的令牌(坏计划)或每个会话的唯一令牌。在后一种情况下,您需要将会话绑定到IP,这也减少了从另一台计算机欺骗令牌的能力
对于关键事务(如果有),您还可以要求用户重新确认密码(通过HTTPS)。我在这里看不到任何与编程相关的内容。投票迁移到服务器故障,它在主题中显示。我看到一个表模式和一个创建cookie值的算法。看起来像是在编程。有什么可以阻止会话固定的吗?@Wrikken会话id(我称之为令牌)在每次访问页面时都会被更改。它也只使用cookie中的会话id(令牌);P1)是的,cookie值可能被劫持,只是试图最小化它。2) 是的,我计划在每个会话中使用不同的令牌。至于将IP绑定到it上,我们在很早以前就用我们现有的系统实现了这一点,但它给我们的客户带来了很多问题(我们在aol上有很多客户),情况是否仍然与当时一样?3) 是的,我计划让用户重新确认他们的密码。