2016-01-21 45 views
0

我需要做直接但安全的(不是Fort Knox,但是合理的)登录到我的PHP站点。我想这样做的步骤是:通过这些是实现安全PHP用户登录的正确步骤吗?

  1. 用户访问网站的HTTPS

  2. 的用户名和密码,进入登录界面上,哈希在服务器上,并与预哈希密码(从当他们注册),存储在用户记录的数据库中。我打算使用password_hash做哈希(使用盐)

  3. 所有的数据库查询使用参数绑定防止SQL注入

  4. 当用户登录时,我设置$_SESSION['logged_in'] = true,并使用session_regenerate_id

  5. 我设置session.use_only_cookies选项

任何事情,我在这里失踪?

此外,我不确定防止CSRF,XSS攻击和任何建议的最佳方法?

如果相关我在Google App Engine上托管,并使用他们的NoSQL云数据存储作为我的数据库并使用PHP-GDS库(https://github.com/tomwalder/php-gds)作为我的数据库接口。

+0

如果您只是想实施身份验证,请使用Symfony或Zend中的现有软件包。它会为你节省很多麻烦。 – tyteen4a03

+0

谢谢,你正在考虑哪些软件包?我对这些都不熟悉。 –

回答

2

如果您要回显任何用户输入数据,则需要使用PHP的htmlspecialchars()函数将其转义,以防止XSS攻击。

$foo = '<script>alert("This is bad!")</script>'; 

// produces a browser alert! 
echo $foo; 

// just write down the "<script>alert("This is bad!")</script>" string, 
// because it converts "<" to "&lt;" and so on... 
echo htmlspecialchars($foo);