1 回答
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
TA贡献2003条经验 获得超2个赞
PHP会话基于Cookies。当用户打开网页时,PHP会设置一个cookie作为响应。浏览器会自动确保在后续请求中,也会在请求中发送cookie,因此$ _SESSION变量起作用。我认为,它们不能提供太多的安全性。现在,恶意用户必须使用Cookie来代替用户ID。始终使用HTTPS来保护请求。
使用Android应用程序时,您将要进行自定义请求,因此,一旦收到第一次调用,就必须明确设置cookie(您必须将其保留在客户端;这不是一个好方法) 。
会议的通常工作方式如下:
首次使用$ _SESSION设置值时,PHP会设置一个会话cookie,该会话cookie本质上是一个随机字符串。
在后台(在后端)中,PHP将针对此字符串值维护一个对象(键-值对)。(
SessionKey1 = { key: value, key2: value2 }
;这可能在磁盘文件系统上或在缓存层(例如Redis)上,具体取决于您的服务器配置)当您设置/更新/删除会话中的密钥时,将
SessionKey1
被修改。
现在,您可以为自己创建类似的行为。在Android App端找到userId时,将其发送到后端,在会话表中创建一行(会话ID为随机字符串,用户ID为UserId)。对于每个请求,请在后端将这个SessionId与请求(在正文或标头中)一起发送,然后在Sessions表中检查是否收到了sessionId退出。如果是,请获取用户ID并进行处理。
这是另一种方法(可能有点安全)
帐户工具包验证后找到访问令牌时
发送给后端
从Facebook API验证令牌(链接)
验证API还会返回用户信息,并将其映射到您的用户数据(来自数据库结构)。
(这将确保令牌始终有效,用户将无法放置随机令牌来进行攻击,因为这将使来自Facebook API的验证失败)。
生成一个UUID,用
UUID作为sessionId,
您的userId
存取资料
创建时间(创建行时)
到期时间(当前时间+ X天)
发送此UUID作为响应。
现在在Android端,将此UUID保存在某处。创建一个请求拦截器,为所有请求在自定义标头(例如X-<application_name>-Auth
)中设置此UUID 。在每个请求的后端,访问此标头,检查其是否过期,从会话表中获取用户ID,然后继续。
我认为他可以很好地获取有关带有WHERE子句ID_user = ID_user的会话的信息。
完全正确?
你是绝对正确的。但是,保护数据库层应该是与应用程序开发分开的任务。您如何看待黑客能够首先执行查询?如果人们找到了一种在数据库上运行原始查询的方法,那么他所造成的损失将不仅仅是提取数据。
如果我是对的,那有什么比我做的事更安全的呢?
没有正确的答案,您只需要尽力保护应用程序安全即可。确保您的应用程序遵循最佳安全实践。例如-使用HTTPS,防止SQL Injection.s(搜索OWASP Vulnerabilities
)
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报