整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML编辑器 实现CTRL+V粘贴图片并上传、WORD粘贴带图片

TML编辑器粘贴word图片,web编辑器粘贴word图片,web富文本编辑器粘贴word,前端编辑器粘贴word内容,前端web编辑器粘贴word,支持快捷键操作(Ctrl+V),

粘贴后word图片自动上传到服务器中,然后自动将图片和文字HTML添加到编辑器中。

用户这边日常的编辑工作基本上都是在word中完成的,用户把内容编辑好后希望能够直接一键(通过快捷键)粘贴到网站后台新闻发布页面的编辑器中,这样能够节省不少时间。提高工作效率,信息发布效率。

用户发布新闻的时候是从word里面复制图片和文字,然后将word图文内容粘贴到web富文本编辑器中,希望能够将word的图片自动上传到服务器中,服务器地址能够自定义,后端的话需要支持任意开发语言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。只要是基于标准HTTP协议的都要支持。如果能够不装控件最好,

实际上装不装都无所谓,只要好用。

1.下载示例:

http://www.ncmem.com/webapp/wordpaster/versions.aspx


2.复制WordPaster插件目录


3.引入插件文件

注意:不要重复引入jquery,如果您的项目已经引入了jq,则不用再引入jq-1.4


4.在工具栏中增加插件按钮


6.初始化控件

注意:

1.如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段


参考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45

2.如果接口返回JSON,请配置ImageMatch


参考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1

3.如果接口返回的图片地址没有域名,请配置ImageUrl


参考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936

4.如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。

参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3


效果

让我们看看如下这个web应用示例:

<html>
 <meta http−equiv="Content−Security−Policy"
 content="script−src 'nonce−...' 'unsafe−eval'">
 <div id="template_target"></div>
 <script type="application/template" id="template">
 Hello World! 1 + 1 = {{ 1 + 1 }}
 </script>
 Your search is <?php echo $_GET['q']; ?>
 <script nonce="...">
 let template = document.getElementById('template');
 template_target.innerHTML = template.innerText.replace(/{{(.∗)}}/g,eval)
 </script>
</html>

以上这段简单的HTML代码可能反映了现在渗透测试人员经常碰到的模板化Web应用。某些模板内容存储在Web页面中,然后再转换为HTML代码的一部分。上段代码中含有id为template的HTML元素内容先被读取,然后再执行{{}}括号内的内容,最后在某个单独HTML元素中呈现出来。

Hello World! 1 + 1 = 2
Your search is ........... 

其次,这段代码应用程序会在页面上打印URL中的参数值。这显而易见是一个XSS漏洞,但由于CSP(内容安全策略)的存在,攻击者并不能直接执行javascript。虽然直接运行javascript的路被堵死,但是我们可以找到其他绕过方法。

乍一看,貌似eval函数是一个可以利用的点,我们或许可以直接插入某些特制代码,让eval函数去执行。

为了实现这点,我们必须插入HTML元素中id为template的代码。但在我们插入语句的前面已有id为template的HTML元素,而document.getElementById('template')只会去获取第一个HTML元素,并不是我们所输入的语句。

此刻,我们需要换个角度,看看浏览器是否能出现“意外”,以前就出现过很多浏览器的异常解析所导致的XSS攻击。我把所有能使用的tag都收集起来进行测试,看看是否有惊喜。测试代码如下:

<div id="template">First Tag</div>
 {% for tag in tag_list %}
 <{{tag}} id="template">{{tag}}</{{tag}}>
 {% endfor %}
<script>console.log(document.getElementById('template'));</script>

当程序运行完毕时,我得到一个奇怪的结果:当轮到<html>时,页面结构似乎发生了大变,此时已不再是<div>排在前面。让我们看下当插入<html id="template">时的变化:

此时<html>已排在文档顶部(在我所测试的所有浏览器中都是如此!),现在getElementById('template')将获取<html>中的恶意数据,而不是<div>的内容。

只需简单的?q=<html id="template">{{ alert("xss") }}</html>就可进行攻击

最终,由于浏览器这个“莫名其妙”的特性,我们绕过了CSP成功进行了XSS攻击!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:https://nosec.org/home/detail/2860.html

原文:https://pagedout.institute/download/PagedOut_001_beta1.pdf(该PDF文档的第62页

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

PHP 动态页面转换为静态 HTML 页面的主要意义在于提高网站的性能和可用性。下面是一些具体的好处:

  1. 提高网站性能:静态 HTML 页面可以直接从磁盘或缓存中加载,无需动态生成,因此可以显著减少服务器响应时间和页面加载时间,从而提高网站的性能和响应速度。
  2. 改善用户体验:由于静态 HTML 页面可以更快地加载,因此用户可以更快地浏览网站并获得所需的信息,从而提高用户体验和满意度。
  3. 降低服务器负载:静态 HTML 页面可以从缓存中加载,无需执行 PHP 代码和查询数据库,因此可以减少服务器负载,提高网站的稳定性和可用性。
  4. 提高搜索引擎优化:搜索引擎更喜欢快速加载和静态内容的网页。因此,将 PHP 动态页面转换为静态 HTML 页面可以提高网站的搜索引擎排名和流量。

然而,将 PHP 动态页面转换为静态 HTML 页面并不适用于所有类型的网站,特别是对于需要动态生成内容和实时更新的网站,如电子商务网站、新闻网站等,这种转换可能会导致信息更新不及时,从而影响网站的可用性和用户体验。因此,需要根据实际需求和情况来选择是否需要将 PHP 动态页面转换为静态 HTML 页面。

生成HTML文件

要生成 HTML 文件,可以使用 PHP 中的文件处理函数和输出函数来创建一个新的 HTML 文件并将其写入磁盘。下面是一个简单的示例:

<?php
// 创建一个新的 HTML 文件
$html = '<html><head><title>My HTML File</title></head><body><p>Hello, world!</p></body></html>';
$file = fopen('myhtmlfile.html', 'w');

// 将 HTML 内容写入文件
fwrite($file, $html);

// 关闭文件
fclose($file);

// 输出成功信息
echo 'HTML 文件已经生成!';
?>

在上面的示例中,首先创建了一个包含 HTML 代码的字符串变量 $html。然后使用 fopen()函数创建一个新的文件,并将其设置为写入模式 'w'。然后使用 fwrite() 函数将 HTML 内容写入文件。最后使用 fclose() 函数关闭文件。生成的文件名为 myhtmlfile.html,它将保存在与 PHP 脚本相同的目录中。

请注意,上述示例是一个简单的示例,用于说明如何生成 HTML 文件。在实际应用中,您可能需要更复杂的 HTML 代码,需要使用循环或条件语句生成动态内容,并使用样式表或 JavaScript 对 HTML 进行美化和交互。

动态转静态——HTML 缓存

将 PHP 动态页面进行 HTML 缓存可以显著提高网站性能,因为它可以减少服务器请求和页面加载时间。以下是一些用于将 PHP 动态页面进行 HTML 缓存的常见方法:

1.使用 PHP 自带的输出缓存机制 ob_start() 和 ob_get_contents() 函数。

<?php
// 启动输出缓存
ob_start();

// 输出动态内容
echo 'Hello, world!';

// 将输出内容保存到缓存文件
file_put_contents('cached_page.html', ob_get_contents());

// 清空输出缓存并关闭
ob_end_clean();
?>

在上述示例中,使用 ob_start() 函数启动 PHP 输出缓存,然后使用 echo 输出动态内容。然后,使用 ob_get_contents() 函数将输出内容保存到缓存文件中,并使用 file_put_contents() 函数写入缓存文件。最后,使用 ob_end_clean() 函数清空输出缓存并关闭。

2.使用第三方缓存库如 Memcached 或 Redis。

这些缓存库可以在服务器内存中存储缓存页面,并且能够通过一个唯一的键名来访问缓存页面,从而加快页面访问速度。具体实现可以参考对应的文档或者库的使用说明。

3.使用 HTTP 缓存头信息。

这是一种在浏览器和服务器之间缓存页面的机制,通过设置响应头信息来控制页面缓存。可以通过设置 Expires、Cache-Control、Last-Modified 和 ETag 等响应头信息来控制页面的缓存,从而减少对服务器的请求。具体实现可以参考 HTTP 协议规范或者使用对应的 PHP 框架提供的缓存机制。

无论使用哪种方法,都需要谨慎考虑缓存时间和更新机制,以确保缓存页面在需要时被及时更新,并避免缓存过期或出现脏数据等问题。