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

dgjrabp2  于 2023-06-27  发布在  Java
关注(0)|答案(6)|浏览(138)

我在工作中被问到,是否有可能故意或无意地编写JavaScript,从HTML文档中删除特定字符,从而破坏HTML。一个例子是添加一些JavaScript来删除页面中的<符号。我试着在网上搜索,我知道JavaScript可以替换字符串,但我对语言的了解微不足道。
我被要求研究它,希望能解决为什么我工作的网站需要控制谁可以向页面添加定制功能。我希望这是不可能的,但会感谢心灵的平静!

9udxz4iz

9udxz4iz1#

是的,事实上,你也可以用JavaScript做更阴险的事情。
http://en.wikipedia.org/wiki/Cross-site_scripting

k97glaaz

k97glaaz2#

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

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文件。只要找到并删除/修复“坏”的代码行,一切就又好了。

0lvr5msh

0lvr5msh3#

任何客户端/浏览器都可以在任何时候操纵页面的查看方式,例如在chrome中点击F12,然后您可以在html中编写任何您想要的内容,您将立即看到更改。不过,不用担心。
可怕的部分是,当网站上的JavaScript与后端服务器通信并为其提供一些输入参数时,这些参数在以某种方式处理之前没有在服务器端进行清理。SQL注入也可能以这种方式发生,如果后端使用数据库,他们几乎总是这样做,等等。
一个网页有两种操作方式,要么是non-persistent,要么是persistent

**[none-persistent]:**这样你就可以操纵你对网页的访问,但是,这不会影响其他用户在它自己,但你可以做伤害一旦你。
**[persistent]:**这样服务器端代码会永久受到注入代码的影响,很可能会影响到其他用户。

这里的关键是在后端服务器处理任何东西之前,始终对它使用的输入进行清理。

mzillmmw

mzillmmw4#

你当然可以写一些JavaScript函数来修改文件的内容。如果该文件是您的HTML页面,那么当然可以。
如果您想防止这种情况发生,您可以将该HTML文件的权限设置为只读。

kkih6yb8

kkih6yb85#

你可以:
1.覆盖页面
1.扰乱body标签的innerHTML(几乎相同),
1.插入非法元素。

8ftvxx2r

8ftvxx2r6#

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

相关问题