首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户是否可以更改元素的ID?

用户是否可以更改元素的ID?
EN

Stack Overflow用户
提问于 2014-12-16 04:45:53
回答 3查看 58关注 0票数 0

所以,正如标题所说的,我很好奇,用户可以通过浏览器更改元素的ID吗?我有一个输入列表-复选框,当你点击其中的一个时,ajax获取元素的ID,并使用它从数据库中获取数据,所以基本上我在想的是,如果以某种方式改变元素的ID是可能的,我的数据库就不会受到保护。如果有可能,我应该如何保护它?

好吧,所以我的想法是,如果我这样使用,它将不会被保护:

代码语言:javascript
复制
<?php

$mysqli = new mysqli("host", "user", "password", "database");

$usuario = $mysqli->real_escape_string($_POST["usuario"]);
$clave = $mysqli->real_escape_string($_POST["clave"]);

$sql='  SELECT * FROM usuarios 
        WHERE username="'.$usuario.'" 
        AND pass="'.$clave.'"
     ';

$mysqli->query($sql);

$mysqli->close();
?>

这是否足够,或者实际上没有足够安全的方法来保护数据?

EN

回答 3

Stack Overflow用户

发布于 2014-12-16 04:49:12

您说得对,这将是一个安全漏洞。ID属性确实可以通过浏览器控制台进行更改。

票数 2
EN

Stack Overflow用户

发布于 2014-12-16 04:52:16

是的,他们可以改变它,或者只是让while request是伪造的,而你不会区分它们。这里的经验法则是从不信任来自用户的任何数据。这意味着-总是在服务器端对数据进行验证,清理数据,并且总是假设请求中的数据会欺骗/欺骗/黑客你。

票数 1
EN

Stack Overflow用户

发布于 2014-12-16 04:53:17

是。一旦DOM在他们的浏览器中,用户就可以对它做任何他们喜欢的事情。

他们还可以在那里执行任何他们喜欢的JS。

不过,您在错误的地方担心这个问题。您的控制在the服务器的边缘结束。客户端可以向它发出任何他们喜欢的HTTP请求,并包括他们想要的任何id值。您需要在那里解决安全性问题,而不是在浏览器中。

如果你想保护你的数据库,那么你需要要么不允许HTTP请求导致秘密数据被释放/改变,要么你需要编写服务器端规则来限制哪些HTTP请求可以改变它们。

通常,这涉及到知道请求来自谁(身份验证)和知道谁可以访问哪些ID(授权)。

一种简单的方法是维护一个数据库,该数据库包含一个用户表(包括散列密码)、一个“事物”表和一个所有权表(其中有一列用户ids和一列事物ids)。如果请求中不包含用户名和密码,您可以交叉引用所有权表中的事物id -返回一条错误消息,而不是要求返回的消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27492816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档