0

我正在使用从链接获得的参数写入我的数据库。

考虑以下链接:

mywebsite.com/index.php?ud=33&nt=117&g=Yes

如果我使用链接并更改它将写入数据库错误数据的值,有什么方法可以防止这种情况发生?

请注意,要从电子邮件中单击链接

我在想的是每条消息的一次性身份验证密钥,它只能工作一次,但这会在数据库上花费大量空间,有没有更好的方法?

4

1 回答 1

1

请记住,敏感数据不应该在查询字符串中。

按着这些次序:

1 - 在将链接写入数据库之前,您应该检查参数是否一致并且用户有权访问它作为业务规则的一部分。

2 - 然后,您应该考虑查询字符串的哪些参数应该是纯文本(即在存储在数据库中的链接内)。例如,如果你将一个实体的 ID 保存到查询字符串中并发送到数据库,你必须考虑在删除提到的实体的情况下是否会出现问题。由于您的查询字符串是纯文本,因此不会执行级联。在这种情况下,最好的方法是将查询字符串转换为数据并将其作为外键而不是查询字符串存储在数据库中。然后,您可以通过在应用程序级别构建它来恢复完整链接。


另一个提示:

由于您通过电子邮件发送链接,因此您可以ud=33&nt=117&g=Yes通过运行加密算法将字符串转换为纯文本(在您的场景中),以将所有这些转换为一个单独的加密字符串。你会有类似的东西mywebsite.com/index.php?c=IJNWEI7we876fWEPOWOKEMF。它的用户友好性和防玩性较差。

希望能帮助到你。

于 2013-07-22T03:40:12.080 回答