我有一个问题困扰着我正在进行的一些项目。此问题与What's the difference if I put css file inside <head> or <body>?或类似问题不重复。
例如想象一下电子邮件服务。用户在goodmail.ex上有一些电子邮件收件箱,他收到了来自Badguy的电子邮件。 Badguy知道goodmail.ex的源代码,并且知道在打开字母的位置旁边的页面上有一些输入,用户应该插入一些敏感信息。或者甚至可能是一个弹出窗口,所以Badguy用HTML格式写了这个字母并添加了一些位置:fixed或position:绝对样式,所以其中一个块(这个例子让它成为电子邮件信息 - 登录和密码弹出,说用户会话已经结束,更新,输入您的数据)与goodmail.ex服务有类似的设计。用户认为它没关系,因此他输入了该信息并将此信息发送到其他地方。
原来如此!问题不在于我如何阻止这个css,一些使用自定义解析器的过滤应该在这里运行良好,但是如何阻止用户使用goodmail.ex正在使用的任何CSS类?例如,goodmail.ex正在过滤每个字母的位置:fixed,但是有一些块浮动有一个名为“goodmailfloatingbox”的类,所以Badguy只是写,fakelogin得到position:fixed属性。这个问题没有得到很好的解释,但我希望你能理解需要什么。
哦,是的,iframe不是一个选项。
因此,可以使用页面中间的某些代码覆盖现有的已定义类样式,以使其安全并尽可能多地兼容crossbrowser吗?
谢谢
答案 0 :(得分:1)
您可以为document.getElementsByTagName
和style
编写一个使用link
的简短脚本,然后可以检查生成的值数组,以查看所有loadede css文件是否正确。
要覆盖现有定义,只需在css文件中使用!important
,这将是最主要的样式(对于该类型)。
如果要在页面中间加载它,可以使用与此处第一段相同的javascript函数,除了它删除正文中出现的对象,并将其附加到头部对象。如果我使用ajax更新页面,我会这样做。