在元素属性中使用用户输入是否安全?

时间:2017-10-06 15:09:10

标签: javascript html5

以这种方式存储潜在的有害用户输入是否安全:

var rootDiv = document.createElement("div");
rootDiv.setAttribute("data-userid", userId);

userId来自服务器。

更新 抱歉,我觉得我有点不清楚.. userId来自服务器,但另一位用户以前发过它。

更新2 但有害的,我的意思是对用户来说,就像恶意脚本一样。

3 个答案:

答案 0 :(得分:1)

关于该代码的任何内容都不安全。

任何风险都来自于您首先填充userId变量的方式,或者您在阅读data-userid后对数据执行的操作。

答案 1 :(得分:0)

是的,您的代码很好,只要它保持在客户端。用户可以更改他们想要的任何内容,所有更改都只在他们身边,只要您正确验证,任何其他人都不会看到它。如果Javascript然后破坏或搞砸了,那对他们来说太糟糕了,因为只有他们会经历它。

只要您不在服务器端使用相同的信息,您就可以了。即使您对此进行检查,它们也可以改变它,因为它是客户端。它们可以摧毁更多,更容易它们(这就是为什么你总是检查服务器端) 如果该值应为ID,则服务器应该已经检查过它是否为ID,甚至将其保存到数据库中。

编辑后编辑:假设您已经确定此数据是安全的(因为它已经存在),这些数据来自您的服务器的事实根本不重要服务器端。)

答案 2 :(得分:0)

没有害处。好吧,如果它在前端,无论如何不能在你的手中保护它。最好在根据用户ID处理更多请求时进行服务器端验证。

简而言之,在处理请求时检查服务器上是否收到相同的ID。