用户数据库结构

时间:2012-04-21 15:32:39

标签: php mysql user-accounts user-data

我正在运行一个带有一些用户帐户的基本网站(没有cookie,php会话系统。)。 我想存储用户生成的一些数据,只能为自己显示。

目前我将来自所有用户的数据存储在一个表中,并带有一个用于标识的额外列(这是来自php session user-id的输入)。 (我们说的是每个用户最多50-100个密钥)。

在数据请求中,我在mysql查询中有一个额外的参数(AND“user-id”= x)。

  1. 这是安全的(网站上没有敏感数据,但帐户必须是私密的)存储数据的方式吗?

  2. 有没有更好的方法来解决这个问题? (我读过关于单独的数据库等),如果是,怎么做?

  3. THX,

    微米。

3 个答案:

答案 0 :(得分:2)

  

这是否安全(网站上没有敏感数据,但是   帐户必须是私有的)存储数据的方式?

在mysql查询中使用user-id=x从表中获取数据没有任何问题。但是请确保您没有直接从查询字符串中读取此值并附加到mysql查询而不进行适当的清理和清理。 否则您将成为SQL injection的受访者。

  

有更好的方法来处理这个问题吗? (我读到了关于单独的数据库   等等)如果是这样,怎么样?

我认为没有任何理由可以使用单独的数据库来处理这个问题。您可以使用当前的数据库。如果需要,您可以为此创建其他表。我不确定你的db模式和实体关系是什么。所以我无法告诉你如何做到这一点。查看表格并确保它已标准化。

如果您希望只有特定用户才能看到存储的数据,您可能想要检查当前登录的用户ID(从会话变量中获取?)是否与db记录的userId相同。可能是您可以与“CreatedById”字段值进行比较(如果您有)。

我认为如果“SQL注入”是一个新术语,必须阅读此链接。 http://www.unixwiz.net/techtips/sql-injection.html

答案 1 :(得分:0)

只需使用PHP $SESSION

通过使用session_set_save_handler,您可以定义自己的会话存储方法,例如,可以是MySQL数据库。

用户不能直接更改会话中的值(就像使用cookie一样)。所以这种方法是完全安全的,只要你不在任何地方公开PHPSESSID cookie值。

答案 2 :(得分:0)

不可能100%安全。你的方法听起来很不安全,但我看不到你的代码。如果您正确清理输入以避免mysql注入,并且用户无法指定其他用户的密钥,那么您可能没问题。