0

我不知道如何很好地编写网页,所以我有以下问题。我有一个用户可以管理的 MySQL 数据库。我有两张桌子:人物,视频。

我希望我的页面让用户从人员表中选择一个人(例如按姓名),然后将此人与视频链接相关联。从数据库中选择人很容易,

SELECT personID, name
FROM persons
WHERE name LIKE '%John%'

因此,现在用户必须将视频链接插入到具有外键 personID 的视频表中。

我可以在“选择”之后将人的主键存储在隐藏的 html 输入表单中,但我认为这不是很安全,因为他们可以编辑它?

我的问题是:在 select 和 insert 调用之间,您会将这样的键值存储在哪里?将所有这些数据存储在会话中是否更安全?

4

2 回答 2

2

这种事情经常发生,只要您不介意人们看到您的主键(如果它们是数字,则无需担心),这完全可以

假设您要从表中检索行列表,并以 HTML 格式显示它们。如果您希望每个表行都有一个“删除”按钮,用于从 DOM 和数据库中删除该行,例如通过 XMLHttpRequest,则每行通常都有一个“id”属性,id 是要删除的行的主键值。

通常,您的主键将是:

  • 表中的id字段
  • 设置了 AUTO_INCREMENT 的字段

简而言之,给每个下拉列表一个data-id属性,您可以通过.data选择器在 JavaScript 中访问该属性。这已经足够了。只要确保您还保护自己免受SQL 注入并使用 PDO 和准备好的语句,就可以了。

为了获得额外的保护,并确保data-id在提交之前没有人更改客户端的属性,请检查该字段是否与数据库id中的字段相对应name,您就可以了。

于 2013-08-15T12:31:45.320 回答
0

我认为在会话中存储这种类型的数据是安全的,也是一个不错的选择。毕竟,它是会话范围的,所以没有理由输出它。将其存储在会话中会更安全,当然也更易于访问和管理。

于 2013-08-15T12:28:56.243 回答