2011-01-24 73 views
0

我正在构建一个Web应用程序,以允许他人设计自己的页面。我正在使用PHP,MySQL。PHP:安全地允许用户编写自定义CSS来自定义我的网站上的网页?

我想知道。允许用户通过编写自己的CSS代码来定制他们的页面是否安全?

所以我就在想一个TEXTAREA场,他们可以再在他们的CSS代码进入。

我使用PHP的filter_var($字符串,FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_HIGH);在将字符串保存到我的数据库之前对其进行过滤。

那么......允许还是不允许?

谢谢!

+5

CSS本身不提供不安全的操作。但是,Internet Explorer存在。 – mario 2011-01-24 23:07:50

+1

“但是,Internet Explorer存在”。我其实大笑起来。 – Pickle 2011-01-24 23:31:35

回答

3

IE允许您通过CSS(行为属性)例如包括JavaScript文件。但是,如果只有进入CSS代码的用户才会看到它,那么这是安全的。 如果限制允许的属性,它也是安全的 - 但请注意,您也必须限制值(再次感谢IE,它允许使用JavaScript的动态值)。

3

这是在这个意义上的安全,用户可以用自己的重写你的CSS,无论如何,与浏览器插件等。只要确保一个用户不能影响其他用户的CSS。

使用专用的逃逸功能,以处理数据使你的数据库,但。例如MySQL的mysql_real_escape_string()

+0

+1给你。我会建议阅读以下内容:http://www.owasp.org/index.php?title=XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.234_-_CSS_Escape_Before_Inserting_Untrusted_Data_into_HTML_Style_Property_Values – David 2011-01-24 22:52:42

2

允许用户输入自己的站点的CSS代码通常应该是安全的。浏览器已经实现了他们自己的用户代理CSS,以强化对无格式元素的通用样式。 (从CSS2规范:“用户代理的默认样式表应该以满足文档语言的一般呈现期望的方式呈现文档语言的元素”)另外,确保网站可访问性的很大一部分是允许用户用户代理CSS。

正因为如此容易做的安全性,并不意味着它应该是,但是。举一个例子,任何用户都可以很容易地将一个元素的背景图像设置为网络上不适当的图像。提供这种能力只会为您的网站带来恶意攻击,我认为应该避免这种攻击。