我不知道如何很好地编写网页,所以我有以下问题。我有一个用户可以管理的MySQL数据库。我有两张桌子:人物,视频。
我希望我的页面让用户从人员表中选择一个人(例如,通过名称),然后将此人与视频链接相关联。 从数据库中选择人员很简单,
SELECT personID, name
FROM persons
WHERE name LIKE '%John%'
所以现在用户必须在视频表中插入一个视频链接,该视频表的外键是personID。
我可以在隐藏的html输入表单中存储“select”之后的人的主键,但我认为这不是很安全,因为他们可以编辑它?
我的问题是:你会在select和insert调用之间存储这样的键值? 将所有这些数据存储在会话中更安全吗?
答案 0 :(得分:2)
这种事情发生了很多,只要你不介意人们看到你的主键(如果他们是数字,它不应该是任何东西,那么完全正常担心)。
假设您正在从表中检索行列表,并以HTML格式显示它们。如果您希望每个表行都有一个“删除”按钮来删除该行,无论是从DOM还是在数据库中,比如通过XMLHttpRequest,每行的典型特征是具有“id”属性,其中id为您要删除的行的主键值。
通常,您的主键是:
id
字段简而言之,为每个下拉列表提供data-id
属性,您可以通过.data
选择器在JavaScript中访问该属性。那太好了。只要确保你也保护自己免受SQL Injection的攻击并使用PDO和准备好的陈述,你会没事的。
为了获得额外保护,并确保在提交之前没有人更改data-id
属性客户端,请检查id
是否与数据库中的name
字段相对应,并且您'金色。
答案 1 :(得分:0)
我认为在会话中存储此类数据安全是一个不错的选择。毕竟,它是会话范围的,所以没有理由输出它。 将它存储在会话中会更安全,并且更容易访问和管理。