PHP 中的隔离?

2024-01-08

这是我思考了一段时间的事情。
我正在创建一个应用程序,我的用户将在其中上传他们自己的自定义主题,这意味着对于任何具有基本 PHP/XSS/任何技能的人来说,这将是一个很好的机会来引起很多麻烦。

我想在一种沙盒、封闭的环境中运行任何上传的文件,该环境只能访问我想要的内容(变量),而不能访问其他内容。

这是一个好的做法吗?将如何完成?


为了安全地允许任意 html/javascript,每个用户必须有自己的子域。如果每个用户都有自己的子域,那么用户的 JavaScript 将被限制在自己的沙箱中,因为同源政策 http://code.google.com/p/browsersec/wiki/Part2。如果您只想允许“安全 html”,那么html净化器 http://htmlpurifier.org/是一个选项,然后您可以使用 1 个域。

允许自定义 PHP 有点危险。 “共享托管”提供商依赖suPHP http://www.suphp.org/Home.html这会强制 php 脚本以特定用户身份运行。这将要求每个用户在您的系统上拥有自己的帐户。这种防御方法已经存在一段时间了。它并不完美,但它确实有效。

自定义主题的另一个可能的解决方案是使用模板引擎,它可以防止模板获得对 PHP 的完全访问权限。一些流行的框架:

  1. smarty http://www.smarty.net/,它没有最好的安全记录,但您保持最新状态可能不会有问题。它需要是配置为禁止本机 php http://devzone.zend.com/article/1257#Heading7.
  2. twig http://twig.sensiolabs.org/是 Symfony 框架制造商推出的一个相对较新的引擎。这意味着它拥有良好的开发者基础,并且由于它随 Symfony 一起提供,因此它也经过了实际测试。 Twig 不允许调用任何 PHP 函数,除非您专门为它们创建一个 twig 函数/过滤器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中的隔离? 的相关文章

  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 强化文件中的跨站脚本

    我在控制器中有以下代码 参数 base64String fileName 是从浏览器发送的 var fileContent Convert FromBase64String base64String return File fileCont
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p

随机推荐

  • 如何跳过 PHPUnit 中的前 N ​​个测试?

    场景 使用 PHPUnit 运行大量测试 一些测试 例如 1544 中的 537 个 在几分钟后失败 更改很小 不太可能影响之前的测试 我希望能够跳过前 536 个测试 执行类似这样的操作以 从我上次停下来的地方继续 phpunit ski
  • 在 ASP.NET 中自动进行 HtmlEncode

    被 Ruby on Rails 3 宠坏了 我希望所有 HTML 输出都能自动编码 我问这个关于脚本漏洞的问题 https stackoverflow com questions 7136864 script exploits in asp
  • 将本机页脚视图添加到 webview

    我有一个WebView和我想在下面添加的本机自定义视图WebView 我试过包裹WebView里面一个ScrollView 虽然这正是我想要的 但滚动性能确实很滞后 如果用户点击屏幕滚动滚动条并不会像应有的那样停止滚动 我想到的另一种方法是
  • ASP.NET MVC + 模型状态和部分视图

    我有一个名为 LogOn 的部分视图 其中我基本上将登录输入复制到控件中 我使用 Html RenderPartial 将控件放置在 Ajax BeginForm 内的 Index Html 中 div div 我正在尝试传回验证消息并显示
  • 单击按钮后按键监听器不工作

    我在java中的框架上附加了一个按键侦听器 当我按下任何键时 我可以检测到按键 但是奇怪的事情正在发生 我的游戏是扫雷游戏 我有一个重新启动按钮 基本上可以清除棋盘并重新挖掘它 奇怪的是 当我用鼠标单击按钮时 一切都正常 并且面板被提醒 但
  • pandas 数据框的高效扁平化

    我有一个熊猫数据框 它看起来像这样 pd DataFrame data np arange 1 10 reshape 3 3 index A B C columns A B C 但有 100 行和 100 列 我想把它压平 使它看起来像这样
  • 将文本从电脑复制并粘贴到 Android Studio 模拟器时出错

    大约 2 个月前 我能够从电脑剪贴板复制文本并将其粘贴到在 Android Studio 模拟器上运行的应用程序中 只需在电脑上执行 ctrl c 并将其粘贴到 TextView 中即可 现在我使用的是新版本的Android Studio
  • 钥匙锁实际上锁定了什么资源?

    我知道钥匙锁将钥匙锁定在索引中 然而 钥匙 到底意味着什么呢 例如 如果我在姓氏列上有一个非聚集索引并尝试更新姓氏 Jones 的位置 那么我是否会有效锁定表中姓氏为 Jones 的每一行 或者索引会被锁定在更高的级别 从而阻止访问姓氏不是
  • 在 ListView 中触摸项目时更改行背景颜色

    我尝试使用 BaseAdapter 在 ListView 中显示项目 我在 BaseAdapter 中尝试以下代码 Override public View getView final int position View convertVi
  • CSS:为什么“vertical-align:middle”不起作用?

    考虑以下示例 现场演示在这里 http jsfiddle net cXUnT HTML a img src http img brothersoft com icon softimage s smiley s challenge 13193
  • 根据浏览器宽度显示图像

    我有一堆图像想要使用 jquery 显示 我有 div 我使用 jquery 根据某些 node id 标准填充 div 例如 如果 node id 是 teamA 我会显示图像名称中包含 teamA 文本的图像 它可以工作 问题是当将图像
  • 地平线检测算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您能帮我找到有关如何检测图像上的地平线的信息吗 它不应该基于遗传算法或神经网络 只是发现这个问题很有趣 所以我在互联网上为您搜索并提出
  • 调整 G1GC 参数以进行积极的垃圾收集?

    我的 JVM 基本上是一个 Spark 执行器 它一个接一个地运行任务 任务需要大量内存 并且在其生命周期内需要大量内存 JConsole 和 JVisualVM 并排报告 https i stack imgur com seZNO png
  • Meteor:什么时候 this.isSimulation 比 Meteor.isClient 更有用?

    this isSimulation的定义 Access inside a method invocation Boolean value true if this invocation is a stub Meteor isClient 的
  • Django:为什么 Foo.objects.extra(...) 比 Foo.objects.raw 快得多?

    所以我试图优化一个相当奇怪的查询 但这是一个遗留数据库 所以我用我所拥有的来凑合 这些是我正在尝试的查询 此时它们提供相同的输出 w 是我的查询集 def future schedule request past datetime date
  • setPluginState(WebSettings.PluginState) 已弃用。我应该怎么办? (网页视图插件)

    我正在使用以下代码将我的 Flash 游戏制作成 Android 应用程序 它工作得很好 但编译器给出了错误 类型中的方法 setPluginState WebSettings PluginState WebSettings 已弃用 这是代
  • 溢出滚动不适用于位置固定元素 iOS

    I have position fixed移动设备 尺寸页面最底部的导航栏 导航栏本身有一个溢出容器 用户可以滚动到右侧以查看其他链接 这是一个设计请求 在我看来 用户体验很差 但那是我的 2 美分 我在 iOS 设备上测试时遇到的问题是
  • Google hreflang 语言混淆:我是否必须为页面本身添加 hreflang?

    On 谷歌的hreflang文档 https support google com webmasters answer 189077 hl en 在两种语言的示例中 它表示 假设您有一个英语页面托管在http www example com
  • 了解何时使用 git commit -m 和 git commit -am

    我的主要问题是始终这样做是否有意义git commit am代替git add 其次是git commit m 我知道 am 表示它将添加修改后的 TRACKED 文件中的所有更改 因此 在我没有添加任何新文件的情况下 只运行 git co
  • PHP 中的隔离?

    这是我思考了一段时间的事情 我正在创建一个应用程序 我的用户将在其中上传他们自己的自定义主题 这意味着对于任何具有基本 PHP XSS 任何技能的人来说 这将是一个很好的机会来引起很多麻烦 我想在一种沙盒 封闭的环境中运行任何上传的文件 该