是否可以使用JavaScript来破坏页面的HTML?

时间:2012-06-22 20:52:30

标签: javascript html

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

我被要求将其视为一种有希望解决为什么我工作的网站需要控制谁可以为页面添加定制功能的方法。我希望这是不可能的,但我会感激安心!

6 个答案:

答案 0 :(得分:2)

是的,实际上你也可以用javascript来做更隐蔽的事情。

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

答案 1 :(得分:1)

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

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

将删除整个页面而只是写“已毁坏”。回到你的例子:以同样的方式替换<

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

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

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

答案 2 :(得分:1)

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

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

网页可以通过两种方式进行操作,无论是非持久性还是持久性。

[none-persistent]:通过这种方式,您可以操纵对网页的访问权限,但这不会影响其中的其他用户,但是一旦进入,您就会受到伤害。

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

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

答案 3 :(得分:0)

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

如果您想阻止这种情况发生,您只需将该HTML文件的权限设置为只读即可。

答案 4 :(得分:0)

你可以:

  1. 覆盖页面,
  2. 与body标签的innerHTML混淆(几乎相同),
  3. 插入非法元素。

答案 5 :(得分:-1)

是。至少,你可以用它来编写CSS来设置任何元素,类,ID ......甚至是要显示的主体:none;