gro*_*rom 88
要确保会话安全,有几件事要做:
$_SERVER['HTTP_USER_AGENT'].这为会话劫持增加了一个小障碍.您还可以检查IP地址.但是,这会导致由于多个Internet连接上的负载平衡而导致IP地址发生变化的用户出现问题(在我们的环境中就是这种情况).cmc*_*loh 11
我认为其中一个主要问题(在PHP 6中正在解决)是register_globals.现在的用于避免标准方法之一register_globals是使用$_REQUEST,$_GET或$_POST阵列.
这样做的"正确"方法(从5.2开始,尽管那里有一个小小的错误,但是从6开始稳定,即将到来)是通过过滤器.
所以代替:
$username = $_POST["username"];
Run Code Online (Sandbox Code Playgroud)
你会这样做:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)
甚至只是:
$username = filter_input(INPUT_POST, 'username');
Run Code Online (Sandbox Code Playgroud)
tak*_*hin 11
我的两个(或更多)美分:
关于这个主题有一本很小但很好的书:Chris Shiflett的基本PHP安全性.
基本的PHP安全性http://shiflett.org/images/essential-php-security-small.png
在本书的主页上,您将找到一些有趣的代码示例和示例章节.
您可以使用上面提到的技术(IP和UserAgent),如下所述:如何避免身份盗用
根据我的经验,使用IP地址并不是最好的主意.例如; 我的办公室有两个IP地址,根据负载使用,我们经常使用IP地址遇到问题.
相反,我选择将会话存储在我服务器上的域的单独数据库中.这样,文件系统上没有人可以访问该会话信息.这对于3.0之前的phpBB非常有帮助(他们已经解决了这个问题),但我认为这仍然是一个好主意.