浏览器javascript会损害我的后端服务器吗?

时间:2010-09-29 21:43:11

标签: javascript security xss

我正在编写一个应用程序,我想让用户以这种方式学习javascript:

  1. 用户在浏览器中编写javascript代码,就像在IDE中一样。
  2. 用户保存它,代码将在我的后端No-SQL数据库(MongoDB / CouchDB)中保存为字符串。
  3. 用户几天后打开应用程序,我将该字符串传递给Web浏览器,在那里使用eval()执行代码。
  4. 在后端服务器和Web浏览器之间只传输JSON数据。服务器不会对代码字符串执行任何操作,只会将其直接保存到数据库中。

    这段代码可能会对服务器端造成任何损害吗?

5 个答案:

答案 0 :(得分:3)

server-side上,没有。除非脚本在IE上运行并创建多个文件磁盘。或者向您的系统请求插入数十亿个新条目......

所以你必须小心处理请求(洪水控制),小心使用IE并注意SQL注入。

实施例

我正在谈论的请求可能是这样的:

ajax.post("page_save_js.ext", "code=flood");

然后每次运行时都会插入一个新代码,充斥服务器。 StackOverflow在很短的时间内使用验证码控制此洪水。

答案 1 :(得分:2)

如果它只是作为字符串存储在数据库中,则不会产生任何伤害。

它与存储任何其他字符串没什么不同。它只是那时的数据。

答案 2 :(得分:2)

任何时候你接受用户的输入,你必须检查以确保它不包含sql注入或js注入等内容。

因此,对您的服务器(sql注入可能会擦除/输出您的数据库)和您的用户(js注入可能将它们发送到恶意站点)可能是危险的

答案 3 :(得分:2)

您的服务器代码不会运行javascript,除非您以某种方式告诉它,这样不会导致问题。 (当然,您应该避免任何SQL注入问题。)

但是,如果您在页面中提供敏感信息(隐藏或其他方式),或者允许javascript在服务器上对方法进行ajax调用,那么这些可能是安全问题。

答案 4 :(得分:2)

使用nosql数据库只会让你对“SQL注入”无法攻击,但是有非常类似的QL注入攻击向量。因此,您仍然必须转义数据或使用数据安全API(相当于SQL世界中的预处理语句)。

http://www.kalzumeus.com/2010/09/22/security-lessons-learned-from-the-diaspora-launch/上给出了NOSQL注入的一些示例(在该页面中搜索“NoSQL并不意味着没有SQL注入”)。

对于客户端:如果可能,您应确保仅将java脚本传递给上载它的用户,除非用户受信任。这包括登录表单上的CSRF检查。 Wikipedia failed on this in the past.