让用户添加自己的样式表是一个坏主意吗?

Mot*_*tie 4 php security stylesheet

我是php的新手,我试图弄清楚这是一个坏主意或安全风险.

我有一个数据表,我提供给用户,它有一个加载的默认样式表,但如果用户想要包含他们自己的,我已经做到了,所以他们可以只指向他们的样式表:

http://www.mysite.com/info.php?css=http://www.someothersite.com/mystylesheet.css
Run Code Online (Sandbox Code Playgroud)

我已经尝试在css文件中添加关闭样式标记和javascript,但DOM似乎只是将其加载为无法处理的CSS.

我从未见过任何其他网站允许这种添加样式表的方法,所以,这是一个好主意还是坏主意?我以为我可以让脚本加载文件并查找javascript中使用的关键字,但是通过我的测试,我不确定我是否需要这样做.


更新:我正在添加CSS如下:

<link href="<?php echo (isset($_GET['css'])) ? $_GET['css'] : 'default.css'; ?>" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

Rob*_*t K 8

只要样式表用于他们自己的帐户,而没有其他人使用,那么我会让他们这样做.但是,因为它可以用于会话劫持某人(如果他们没有注销),我会要求用户的密码来更改样式表.我也会强迫它存储在本地.

没有密码,劫机者需要做的就是:

#selector:before {
  content: expression(getCookie('phpsessid'));
}
Run Code Online (Sandbox Code Playgroud)

显然,如果你没有一个名为getCookie的函数,那么他们需要做更多的工作,但是他们仍然很容易获得cookie数据.这就是为什么自定义样式表的密码保护是必不可少的.

如果你不包括每个用户的字段,并使用该$_GET['css']路由,那么请记住,将用户从外部站点(比如MySpace)重定向到他们的页面,并且路由到有害的CSS文件以进行劫持是微不足道的攻击.如果没有保护CSS文件更改的身份验证,即使登录也应该受密码保护,那么您的软件确实非常非常脆弱.