>在我的ajax请求页面中,我从数据库中提取了一行结果,如下所示:
while ($stmt->fetch()) {
echo "<p value='".$taskId."' class='titleRsltTask'>".$taskTitle."</p><br>";
}
此处$taskId
是返回行的主键。当结果返回到 DOM 时,用户可以检查并更改此 ID。假设我有另一个 ajax 请求在单击.titleRsltTask
时删除或更新上述结果,
$(document).ready(function(){
$('.titleRsltTask').click(function(){
id = $(this).attr('value');
$('#taskResults').load('Includes/updateTask.inc.php', {
Id: id
});
});
它使用值$taskId
来查找要在updateTask.inc.php
中更新的行。
- 有哪些方法可以验证用户正在更新的行是否属于他们,以便他们无法通过更改 inspect 元素中的值来更新表中的任何行?
- 首先有没有更好的方法来设置它?使用 SSL 是否有任何帮助?
- 您是否还有其他安全措施要指出,我很高兴听到它们。
我已经对授权、身份验证和加密进行了一些研究,但仍然不确定在这种情况下该怎么做。
我确实理解您对安全性的担忧,因为返回的值是自动递增的数字。
使用 SSL 不会加密或为您提供此类内容的任何安全性。
- SSL仅加密其他用户连接到您的网站。
- SSL 对传输到您网站的数据包进行加密。
可以应用其他安全层的一种方法是使用某种盐算法加密从服务器返回的数字 ID,并以加密格式将其显示在视图中。然后在服务器上解密。
即使有人使用 inspect 元素更改加密值,更新和更改加密值也不会有任何好处,因为在服务器中解密时不会将其处理为有效值。
希望这有帮助。
谢谢
您应该重新考虑表结构。 如果用户只能更改某些行,则在每一行上包括可以编辑它的用户 ID,对请求使用身份验证(通过包含会话 cookie 等(,并将该逻辑添加到UPDATE
命令中。 如果一组用户可以更改某些行,则有一个额外的列指定组 ID/权限,并确保每个用户都设置了权限级别。