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

2023-12-23

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

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

http://www.mysite.com/info.php?css=http://www.someothersite.com/mystylesheet.css

我尝试在 css 文件中添加结束样式标签和 javascript,但 DOM 似乎只是将其加载为无法处理的 CSS。

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


更新:我添加 CSS 如下:

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

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

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

#selector:before {
  content: expression(getCookie('phpsessid'));
}

显然,如果你没有一个名为 getCookie 的函数,那么他们将需要做更多的跑腿工作,但他们获取 cookie 数据仍然太容易了。这就是自定义样式表的密码保护的原因基本的.

如果您不包含每个用户的字段,并使用$_GET['css']路由,然后请记住,通过指向有害 CSS 文件的路由来进行劫持攻击,将用户从外部站点(例如 MySpace)重定向到其页面将是微不足道的。如果没有身份验证来保护 CSS 文件的更改(即使在登录时也应该受到密码保护),那么您的软件确实非常非常容易受到攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 PHP 中你使用复数还是单数来命名你的数组? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当我命名数组类型变量时 我经常遇到一个困境 我使用复数还是单数命名我的数组 例如 假设我有一个名称数组 在 PHP 中我会说 names arr
  • 如何在 Mac v 10.7.2 上安装/使用 php

    我是对使用 PHP 感兴趣的普通大学生 谁能告诉我 101 如何使用简单明了的语言在 mac 版本 10 7 2 上安装 启用它 我将感谢任何和所有的帮助 Cheers 无需安装 PHP 或 Apache 它们已随 Mac 10 7 一起提
  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • 我的 zend 应用程序无法在 YouTube 上上传文件

    我正在使用以下代码在 YouTube 上上传小型和大型视频 该代码在本地主机上正常工作 但是当我在服务器上运行它并上传相同的视频时 它会上传所有小文件 但不会上传大文件 上传完成后 YouTube 对于大尺寸文件显示以下错误 失败 无法转换
  • 为什么php邮件功能在xampp中不起作用

    我在使用 xampp 时遇到问题 我想检查邮件表格 但看不到任何结果 我像本网站中的教程一样配置 Mercury 32 http system66 blogspot com 2010 01 how to send mail from loc
  • 使用 laravel 拒绝 .composer/config 文件权限

    我在 ubuntu virtualbox 上有一个 laravel 项目 我曾经跑步composer update一切都很好 我不知道有什么变化可能会影响这一点 但现在当我跑步时composer update I get file get
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • Laravel 7 会话在不同域中的 IFRAME 上中断

    我尝试在这里开发一个简单的 Laravel 应用程序 https shopifyapp sjranjan com https shopifyapp sjranjan com 此登录工作正常 现在我将上面的 URL 推送到此页面的 ifram
  • 为什么在打开的文件上取消链接成功?

    为什么打开的文件被删除了 在 Windows Xamp 上 我收到消息 仍在工作 但在其他 PHP 服务器上 文件被删除 即使它已打开 并且我收到消息 文件已删除 我也可以从 FTP 删除文件 即使第一个脚本仍在工作 UNIX 系统通常允许
  • 在 Symfony2 (Doctrine) 和 MySQL 中启用微秒

    我有一个具有一列 日期时间 类型的实体来存储时间戳 ORM Column type datetime protected timestamp 我有 MySQL 5 5 40 我发现它不存储微秒 所以我切换到 5 6 21 并导入了所有表格和
  • 如果我有循环引用,我可以触发 PHP 垃圾回收自动发生吗?

    我似乎记得一种设置方法 destruct对于一个类 以这样的方式确保一旦外部对象超出范围 循环引用就会被清除 然而 我构建的简单测试似乎表明这并不像我预期 希望的那样 有没有一种方法可以设置我的类 以便当最外面的对象超出范围时 PHP 可以
  • Monolog - 仅记录特定级别的错误

    我在普通 PHP 应用程序中使用 Monolog 我只想记录特定级别的错误 INFO 和不高于 因为我还有其他处理程序 这是我的代码
  • PHP 中的延迟加载类方法

    我有一堂课 里面有一些相当大的方法 在它的基本和最常见的状态下 大多数功能并不是必需的 所以我想知道是否有一种方法可以延迟加载类的一部分 这些方法需要能够访问私有 受保护的成员 因此如果这些方法是类的本机方法 那将是理想的选择 但是在寻找其
  • Laravel 4 类如何检测它是在 Artisan 任务中运行还是在浏览器请求中运行?

    我有一些应用程序启动代码 需要知道它当前是在 artisan 任务中运行还是在浏览器请求中调用 我如何在 Laravel 4 中检测到这一点 这是最好的方法 if App runningInConsole echo Running in a
  • 从套接字读取数据,发送响应并关闭

    我正在开发一个 c 和 php 项目 其中 PHP 脚本打开一个到 c 程序的套接字 c 程序将读取数据 然后发回响应 在 PHP 脚本中我有以下内容 echo Opening Client fp fsockopen 127 0 0 1 1
  • Outlook 2007 接收 html 邮件作为带有标头的源,其他 MUA 工作正常。为什么?

    我有几个简单的表单 可以发送纯 html 电子邮件 大多数客户端 Gmail Lotus Notes 8 hotmail live windows live mail outlookexpress 都能正常接收电子邮件 但 Outlook
  • 如何摆脱 WordPress function.php 中的“SiteLock-PHP-FILEHACKER-of.UNOFFICIAL”

  • 为什么在这个数组中 NULL 递减而不是负数?

    我已经尝试过这段代码 a array fill 0 4 NULL a 0 a 1 a 2 a 3 var dump a Result array 4 0 gt int 1 1 gt int 1 2 gt NULL 3 gt NULL 为什么
  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了

随机推荐