Javascript 使用隐藏输入检索用户数据是否安全?

Javascript 使用隐藏输入检索用户数据是否安全?,javascript,php,forms,codeigniter,Javascript,Php,Forms,Codeigniter,我有一个非常大的表单,分为5个子表单。从form1转到form2时,form1中的信息存储在DB中,并创建一个用户ID。然后在form2中,这个用户ID被添加为隐藏输入。大概是这样的: <form action="" method="post"> <input type="hidden" value="userIDnumber" id="userId" /> <input type="hidden" value="<?php echo base

我有一个非常大的表单,分为5个子表单。从form1转到form2时,form1中的信息存储在DB中,并创建一个用户ID。然后在form2中,这个用户ID被添加为隐藏输入。大概是这样的:

<form action="" method="post">
    <input type="hidden" value="userIDnumber" id="userId" />
    <input type="hidden" value="<?php echo base_url();?>" id="url" />
    //form data
    <input type="button" id="prevButton" value="Prev" />
    <input type="submit" value="Next" />
</form>
我正在做的是创建一个隐藏表单,并在该表单中添加一个带有UserId的隐藏字段,这样当转到form1时,我可以检索用户刚刚发布的数据,并在用户更改任何内容时更新数据库

我的问题是,这是检索用户数据的安全方法吗?我对javascript非常陌生,所以我不确定这样做是否有办法让攻击者通过直接插入其他用户的id来访问他们的数据

如果是这样,正确的安全方法是什么?我考虑过使用会话,但我工作的客户端不希望用户必须登录

我还没有发现任何与此相关的问题,但如果有,我道歉,请告诉我它在哪里


谢谢您的时间。

当用户访问我的网页时,我会创建一个全局对象,在其中创建一个用户名称空间,如下所示:

APP.user = {}; 
在这个对象中,您可以存储所需的属性,并且可以在用户登录时使用Ajax从服务器检索用户数据

您可以在浏览器内存中获得一个简单的对象,该对象具有键值对。例如:

APP.user = {
    user_id: 'kgy', 
    firstname: 'kim', 
    lastname: 'gysen', 
} 
事实上,这些数据也是公开的。 当数据涉及敏感数据时,在DOM/全局对象空间中存储数据从来都不安全。 当然,用户仍然需要登录才能访问这些数据


有一点是,这种方法会更快,因为不需要对DOM进行爬网,只需要跨不同页面获取一些本地用户数据

id只是一个数字,因此除非攻击者能够访问您的数据库,否则该数字是毫无意义的。然后,您可以生成一些每个用户的密钥,并在表单提交中使用它。隐藏输入的问题是它们并不是真正隐藏的。任何知道如何查看源代码的人都可以看到它们的内容。因此,它们是否安全实际上取决于它们包含的数据。我建议您将表单数据存储到会话中,这样其他表单页面都可以使用这些数据。@Ant100否。数据保持不变。除非您使用session_unset和session_destroy将其取消设置。但用户必须登录才能确保安全?该对象仅在您以用户身份登录后存储用户数据。如果您需要跨不同表单/页面的数据,这非常有用。您不需要每次都向服务器发出请求,因为数据将存储在客户端。啊,好的!问题是客户端不希望用户登录,他希望任何人都可以在不登录的情况下填写表单,但如果用户未登录,您如何在客户端存储用户id?那一刻,用户id还不知道…@Ant100是安全的,因为数据存储在服务器上。安全性仍然取决于您的服务器。
APP.user = {
    user_id: 'kgy', 
    firstname: 'kim', 
    lastname: 'gysen', 
}