2

我在工作中被问到是否可以有意或无意地编写将从 HTML 文档中删除特定字符从而破坏 HTML 的 JavaScript。一个例子是添加一些 JavaScript 来删除页面中的 < 符号。我试过在线搜索,我知道 JavaScript 可以替换字符串,但我对该语言的了解可以忽略不计。

我被要求研究它作为一种希望解决为什么我工作的网站需要控制谁可以向页面添加定制功能的方法。我希望这是不可能的,但我会感激你的内心平静!

4

6 回答 6

2

是的,事实上你也可以用 javascript 做一些更阴险的事情。

http://en.wikipedia.org/wiki/Cross-site_scripting

于 2012-06-22T20:54:13.397 回答
1

任何客户端/浏览器都可以随时操纵页面的查看方式,例如在 chrome 中按 F12,然后您可以在 html 中编写任何您想要的内容,您将立即看到更改。但这不用担心...

可怕的部分是当站点上的 JavaScript 与后端服务器通信并为其提供一些输入参数时,这些输入参数在以某种方式处理之前没有在服务器端进行清理。如果后端使用他们几乎总是使用的数据库,那么 SQL 注入也可能以这种方式发生,依此类推......

可以通过两种方式操作网页,即非持久性持久性。

[none-persistent]:这样你可以操纵你对网页的访问,但这不会影响其他用户自己,但是一旦你进入,你可能会造成伤害。

[persistent]:这种方式服务器端代码将永久受到注入代码的影响,并且很可能影响其他用户。

这里的关键是始终在处理任何内容之前清理后端服务器使用的输入。

于 2012-06-22T21:07:16.207 回答
1

是的,这是可能的。最简单的例子是

var body = document.getElemetsByTagName('body')[0];
body.innerHTML = 'destroyed';

这将删除整个页面并只写“destroyed”。回到你的例子:以同样的方式可以替换<

var body = document.getElemetsByTagName('body')[0];
body.innerHTML = body.innerHTML.replace('<','some other character');

这种“极端”情况不太可能偶然发生,但绝对有可能(特别是对于没有经验的 javascript 开发人员)破坏通常不应该受 javascript 影响的网站上的东西。

请注意,这只会弄乱客户端浏览器中显示的页面,并且不会以任何方式更改服务器上的 html 文件。只需找到并删除/修复“坏”的代码行,一切就又好了。

于 2012-06-22T20:54:57.467 回答
0

你可以:

  1. 覆盖页面,
  2. 弄乱body标签的innerHTML(几乎一样),
  3. 插入非法元素。
于 2012-06-22T21:00:25.243 回答
0

您绝对可以编写一些 javascript 函数来修改文件的内容。如果该文件是您的 HTML 页面,那么可以确定。

但是,如果您想防止这种情况发生,您可以将该 HTML 文件的权限设置为只读。

于 2012-06-22T20:55:14.490 回答
-1

是的。至少,您可以使用它来编写 CSS 来设置任何元素、类、ID……甚至是要显示的主体:无;

于 2012-06-22T20:54:21.087 回答