2011-11-29 82 views
1

我有一个问题困扰着我目前正在处理的一些项目。此问题不是What's the difference if I put css file inside <head> or <body>?或类似的重复。html文件正文中的外部css

例如想象一个电子邮件服务。用户在goodmail.ex上有一些电子邮件收件箱,他在那里收到来自Badguy的电子邮件。 Badguy知道goodmail.ex的源代码,并知道信件打开位置旁边的页面上有一些输入,用户应在其中插入一些敏感信息。或者甚至可能是一个弹出窗口,所以Badguy用HTML格式写了这封信,并添加了一些位置:固定或位置:绝对样式,因此其中一个块(在本例中,它是电子邮件信息 - 登录和密码弹出窗口,表示用户会话已经结束,更新,输入您的数据)与设计,如goodmail.ex服务。用户认为它没关系,不相关,所以他输入它,这些信息被发送到别的地方。

所以!问题不在于如何阻止这个CSS,有的使用自定义分析器进行过滤应该可以在这里很好地工作,但是我怎样才能阻止用户使用任何的goodmail.ex正在使用的CSS类?例如,goodmail.ex正在过滤每个字母的位置:fixed,但有一些块名为“goodmailfloatingbox”,因此Badguy只是简单地写入并且fakelogin获取position:fixed属性。这是不是很好解释,但我希望你会明白什么是必需的。

哦,是的,iframe不是一个选项。

那么是否有可能用页面中间的一些代码覆盖现有的已定义的类样式以使其安全并使其尽可能兼容交叉浏览器?

谢谢

+0

这真的是电子邮件主机的关注点吗?如果这种技术的恶意用户真的让你屠杀其他用户的电子邮件?就个人而言,我宁愿从电子邮件服务中发现电子邮件的大部分保持不变(除了可能下载图像和阻止脚本)。通知您的用户恶意邮件是什么样的,以及如何阻止它们(垃圾邮件过滤器等)。 – rlemon

+0

屠夫?删除位置:固定或绝对是我想要做的,除了恶意用户之外,这怎么能打扰任何人呢?我想这样做是因为我不想将邮件发送到垃圾箱,因为他们可能只是试图在网页上放置一些讨厌的广告。 –

+0

我仍然认为这是错误的方法。但这只是我的观点。 – rlemon

回答

1

你可以写一个使用document.getElementsByTagName对于任何一个stylelink然后这些值的合成阵列可以检查,看看是否所有的loadede css文件是正确的一个简短的脚本。

要覆盖现有的定义,只需在css文件中使用!important,这将是最主要的样式(对于该类型)。

如果你想在页面中间加载它,你可以使用一个和第一段相同的javascript函数,除了删除出现在主体中的对象,并将它附加到头部目的。我这样做,如果我使用AJAX来更新页面。

相关问题