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)
只要样式表用于他们自己的帐户,而没有其他人使用,那么我会让他们这样做.但是,因为它可以用于会话劫持某人(如果他们没有注销),我会要求用户的密码来更改样式表.我也会强迫它存储在本地.
没有密码,劫机者需要做的就是:
#selector:before {
content: expression(getCookie('phpsessid'));
}
Run Code Online (Sandbox Code Playgroud)
显然,如果你没有一个名为getCookie的函数,那么他们需要做更多的工作,但是他们仍然很容易获得cookie数据.这就是为什么自定义样式表的密码保护是必不可少的.
如果你不包括每个用户的字段,并使用该$_GET['css']路由,那么请记住,将用户从外部站点(比如MySpace)重定向到他们的页面,并且路由到有害的CSS文件以进行劫持是微不足道的攻击.如果没有保护CSS文件更改的身份验证,即使登录也应该受密码保护,那么您的软件确实非常非常脆弱.