0

我正在运行一个带有一些用户帐户的基本网站(没有 cookie,php 会话系统。)。我想存储一些用户生成的数据,这些数据只对他们自己可见。

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

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

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

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

谢谢,

M。

4

3 回答 3

2

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

user-id=x在你的 mysql 查询中从表中获取数据并没有错。但请确保您没有直接从查询字符串中读取此值并将其附加到 mysql 查询,而无需进行适当的清理和清理。否则你将成为SQL 注入的受害者。

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

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

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

如果“SQL 注入”对您来说是一个新术语,我相信这个链接是必读的。 http://www.unixwiz.net/techtips/sql-injection.html

于 2012-04-21T15:43:41.557 回答
0

只需使用 PHP $SESSION

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

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

于 2012-04-21T15:36:24.047 回答
0

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

于 2012-04-21T15:37:58.663 回答