Car*_*ith 4 php mysql security session
我希望有人可以帮助我,我正在创建一个PHP Web应用程序,需要用户登录才能在mysql数据库中查看数据.
我只是想知道这是一个好方法,它是否足够安全?我知道PHP脚本中没有什么是安全的,但我需要这个相当安全.
所以这就是我一步一步做的事情,如果你可以指出我正确的方向,并告诉我什么是错的,这将是伟大的!
如果没问题,我存储$ SESSION ["username"]; (有用户名)到会话.
在每个请求/页面加载时,我都有一个函数(下面)来检查会话.
function check_session_valid(){if(!isset($ _ SESSION ['username'])|| $ _SESSION ['username'] ==""){header("Location:/login.php"); }}
现在这样安全还是我这样做完全错了?
以下是我认为用户可以"破解"应用程序:
在注册页面上,当用户输入用户名时,它会告诉他们用户名是否可用.
那么"黑客"不仅可以找到一个不可用的用户名,然后编写一个PHP脚本来设置浏览器中的$ _SESSION ["username"].然后导航到.index.php页面并登录到其他一些用户帐户?
我也在使用"session_start();" 在我"check_session_valid();"之前 对每一个要求,都是错的?
希望你们中的一些PHP专家可以帮助我在这里!
谢谢
那么"黑客"不仅可以找到一个不可用的用户名,然后编写一个PHP脚本来设置浏览器中的$ _SESSION ["username"].然后导航到.index.php页面并登录到其他一些用户帐户?
如果黑客可以编写将在您的服务器上运行的代码,那么是的,这是完全可能的.
但是,如果他们可以将代码放到您的服务器上,他们就可以做任何事情.那时候你完全被冲洗了.(会话安全性是您最不担心的).
所以问题来了,没有代码注入攻击,它是否安全?
好吧,让我们来看看可能的攻击向量:
会话劫持
如果攻击者观察到HTTP请求,他们可以从流量中选择有效用户的cookie,并使用它来"劫持"他们的会话.
如果您使用HTTPS,那么这种攻击是不可能的.
所以使用HTTPS.
会话固定
如果您允许基于URL的会话标识符,则攻击者可以伪造id并将其发送给受害者.然后受害者登录并繁荣,攻击者拥有权利.
您可以通过两种方式来防止这种情况:首先,不要在URL中允许会话标识符: session.use_only_cookies
其次,你应该在login(session_regenerate_id())上旋转会话标识符...