博客地址:https://ainyi.com/65 解释 | 背景 看到标题有点懵逼,哈哈,实际上是后端将文件处理成二进制流,返回到前端,前端处理这个二进制字符串,输出文件或下载 最近公司有个需求是用户在点击下载文件...(==pdf==)的时候,下载地址不能暴露在接口的返回值,前端不要通过这个地址下载,容易发生泄露,不安全。...所以经过讨论,就在后端根据文件地址直接转成二进制流形式,返回给前端合并,再进行下载 文件转换二进制流 在 nodejs 中将文件转换成二进制是比较简单的,先通过接口获取文件下载地址,由于是不同域的地址,...,赋值到动态创建的 a 标签的 href 属性,设置好 download 属性,点击下载后移除 a 标签 注意 要注意的是 在 node 层不必使用 Buffer 处理输出二进制对象,因为返回给前端的时候还是二进制字符串形式...,所以 node 层可直接返回二进制流字符串 在前端在调用 Blob 构造函数的时候,先利用 Buffer 将二进制字符串转为 Buffer 对象,再作为 Blob 的第一个参数,指定好第二个参数的类型
如果您需要您的用户支持多文件下载的话,最好的办法是创建一个压缩包并提供下载。下面通过本文给大家看下在 Laravel 中的实现。...任务 1: 存储用户的发票文件到 storage/invoices/aaa001.pdf 下面是代码展示: $zip_file = 'invoices.zip'; // 要下载的压缩包的名称 // 初始化...zip- open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $invoice_file = 'invoices/aaa001.pdf...$zip- addFile(storage_path($invoice_file), $invoice_file); $zip- close(); // 我们将会在文件下载后立刻把文件返回原样 return...你看,你不需要任何 Laravel 的扩展包来实现这个压缩方式。
一、Laravel ORM 概要 Illuminate database(Laravel ORM) 组件 在 GitHub 的地址 1.1 Laravel ORM 简介 Illuminate database...契约接口,定义了 Laravel 框架核心服务的契约接口 paragonie/random_compat 是一套提供 random_int() 和 random_byte() 等函数在内的随机字符生成类库...1.3 Laravel ORM 下载安装 git clone [email protected]:illuminate/database.git composer install 1.4 Laravel...日期处理组件 |---- paragonine 随机字符生成组件 |---- symfony |---- composer.json composer 包管理配置文件 本系列重点解析...二、 Laravel ORM 核心组件目录结构 前面我们大致了解了 Laravel ORM 系统整体的目录结构,本节我们重点走进 illuminate/database 文件夹,即 Laravel ORM
nmap 扫描端口 当使用 ssh 去连接的时候有一长串的 \x 十六进制的字符串 在转成字符串然后解码多次 base64 之后出现了一串不知道啥意思的字符串 tabupJievas8Knoj 使用 nc...输入之前转出来的那串,结果成功了 然后再扫描端口就能扫到 80 端口了 有个登录页面,但是没有测出来 sql 注入,旁边有个提示说是个 demo,然后爆破出来 demo/demo123 的账号密码 通过 cookie laravel_session...可以知道这是个 Laravel 的框架,登录后存在文件上传,但是文件名是随机编码的,没法解析 那些图片可以下载下来,有个 filename 的参数,然后发现过滤掉了 ../ 使用 download?.../public/index.php(双写绕过)可以把 php 文件下载下来 另外还有它的数据库文件 ...../app/database/production.sqlite 下载下来用 navicat 打开 保存下这些账号密码,然后去 shh 登录一下试试(那些 password 是明文存储的) dean/FumKivcenfodErk0Chezauggyokyait5fojEpCayclEcyaj2heTwef0OlNiphAnA
加密定位与分析 全局搜索epcos,可以定位下面的位置 打上断点,进一步分析可以定位到下面的代码位置 通过上下文分析可以知道这里使用了 AES ECB 加密以及 RSA 公钥加密 先来看 AES 加密 生成随机的...,把刚刚计算的 c Base64编码后把结果中的 = 替换为空,把+替换为 -,编码后才是最后请求中epcos 的值 总结以下第一步请求 1、随机生成 16 位字符串作为 AES 加密 key,将请求的...将上述部分的计算使用 Python 还原,会得到的加密的返回结果 解密定位与分析 返回得内容是 熟悉的字段估计加密也是一样的,在上一步加密的代码往上翻翻就可以找到解密的代码了 有了上面的铺垫之后就比较简单了...先是用私钥 f 解密返回值中aesKey 得到明文的 aeskey 使用 aeskey 参与 AES ECB 解密返回值中的 content 获得明文的招标内容 下载 pdf 我们从解密的明文中获取到字段...announcementKey 的值 这个值是下载 pdf 请求的加密参数 还是从加密的断点中可以发现 有了上面这个 fileKey 之后就可以下载 pdf 了,除了请求链接和加密的内容不一样外,
、加密数据、扫描漏洞, 令牌的库 HTML Purifier - 一个标准的HTML过滤器 RandomLib - 生成随机数和随机字符串的库 True Random - 使用www.random.org...处理PDF文件的库和软件 Snappy - 一个PDF和图像的生成库 WKHTMLToPDF - 一个将HTML转换为PDF的工具 PHPPdf - 一个将XML转化为PDF和图片的库 Office...ANSI to HTML5 - 一个将ANSI转换为HTML5的库 Patchwork UTF-8 - 处理UTF-8格式字符串的便携库 Hoa String - 另一个UTF-8格式的字符串库 Stringy...- 一个多字节支持的字符串操纵库 Color Jizz - 一个处理和转换颜色的库 UUID - 生成UUIDs的库 Slugify - 一个将字符串转换为slug格式的库 Urlify - 一个Django...一个内容协商库 Drest -一个将Doctrine实体展现为REST资源结点的库 Restler - 一个将PHP方法展现为RESTful web API的轻量级框架 fractal - [最佳实践]数据返回的统一化处理
默认情况下,PHP 返回的响应状态码是 200: ?...在 API 接口中,通常返回的是 JSON 格式数据,JSON 本质上也就是对象字符串,所以在请求处理代码的最后,通过 echo 输出对应的 JSON 对象字符串即可,在 PHP 中,可以通过 PHP...'); // 设置下载文件名 header('Content-Disposition: attachment; filename="laravel.zip"'); // 读取二进制文件流返回给客户端浏览器...'/files/laravel7.zip'; readfile($filepath); 这里我们下载一个位于 Web 根目录下 files 子目录下的 laravel7.zip 文件: ?...,最后读取二进制文件流返回给客户端。
表单提交自动给stu赋予0 2.文件上传 $rep->file(‘input name名称’)->move(‘路径’,[可选指定图片名,不指定以原图片名存储]) 缺点:虽能上传,但访问较复杂 解决办法:使用laravel...的文件存储系统 使用laravel文件存储系统做文件上传 2.1配置 文件系统配置文件config/filesystem.php 在disks设置相关驱动 同时 .env配置文件添加相应磁盘名 FILESYSTEM_DRIVER...Storage::putFile('磁盘名',$reg->file('文件名')) helper辅助函数 array_collapse();将多个数组折合成一个数组 str_limit(str,字节限制);限制字符串长度...,多余用省略号代替 str_random(num);随机生成指定长度的字符串包含字母数字 e(html);代码实体转义 app_path();//返回app目录 config_path();//返回config...目录 public_path();返回public根目录 base_path();//返回项目目录 url(‘path’);//生成目录 域名加path; 可用于模板之间的跳转 action(控制器@方法
它使用User-Agent字符串以及特定的HTTP头来检测移动环境。...GitHub Stars: 7k+ 网址:https://github.com/filp/whoops 15、Laravel Debugbar Laravel Debugbar是一个用于Laravel...GitHub Stars: 4.9k+ 网址:https://github.com/squizlabs/PHP_CodeSniffer 32、Dompdf Dompdf是PHP语言的HTML/PDF转换器...GitHub Stars: 3.5k+ 网址:https://github.com/mgp25/Chat-API 46、random_compat 随机数发生器。...、 PHPWord PHPWord是一个使用PHP开发的Office文档读写库,支持MS Office XML(OOXML或OpenXML)、 OASIS开放文档格式、富文本格式(RTF)、HTML和PDF
二、Laravel的CSRF防御过程 Laravel 会自动在用户 session (根据session_id 关联确认属于谁) 生成存放一个随机令牌(token)放在session中,并且如果使用...Laravel 的 {{form::open}} 会自动隐藏存在 csrf_token(),如果需要写html form 则需要在表单中添加具体看下图: ?...三、Token产生原理 通过 Illuminate\Session\Store 类的 getToken 方法获取随机产生长度为40的字符串 以上这篇对laravel的csrf 防御机制详解,及form
如果你之前通过 Laravel 内置的字符串函数处理过字符串的话,可能对 Laravel 中已存在的 Illuminate\Support\Str 类非常熟悉。...before() 方法返回字符串中给定值之前的所有内容: use Illuminate\Support\Str; $slice = Str::of('This is my name')->before...('my name'); // 'This is ' 同理有 before(),就会有 after() after() 方法返回字符串中给定值之后的所有内容。...如果字符串中不存在该值,则将返回整个字符串: use Illuminate\Support\Str; $slice = Str::of('This is my name')->after('This...->words(3, ' >>>'); // Perfectly balanced, as >>> length() 方法返回字符串的长度: use Illuminate\Support\Str;
但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性。...但在Laravel框架中内置了”哈希”Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况,这就提高了安全性。...session()->get(‘key');//获取session里的某个键名 $request->session()->set(‘key','default');//设定一个默认值,当指定键名不存在便返回默认值...$request->session()->all();//返回所有数据 session(‘k'=>$v);//写入session保存数据 以及闪存数据session()->flash()和保留特定数据...配置开发也是非常简单,一般下载框架就可以直接开发,开发代码风格也符合国人思想,所以简单,快捷,适合新手的php框架。
前言 Laravel 的加密机制使用 OpenSSL 提供 AES-256 和 AES-128 的加密,本文将详细介绍关于Laravel中encrypt和decrypt的实现,分享出来供大家参考学习,下面话不多说了...在文件配置加密key和加密算法,在config/app.php的目录里有配置 $ 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC', 使用方法,在laravel...第一个参数是传入数据,第二个参数是传入加密方式,目前使用AES-256-CBC的加密方式,第三个参数是,返回加密后的原始数据,还是把加密的数据在经过一次base64的编码,0的话表示base64位数据。...另外一个地方是,框架在加密的时候使用了一个随机字符串。为什么要使用随机字符串呢,因为使用了随机字符串,使每次加密的内容都是不一样的,防止别人猜出来。...注意 加密时使用的openssl_encrypt里的随机项量值是使用的原始数据raw这种二进制的值,使用openssl_decrypt解密后的值是使用的经过base64位后的随机字符串。
先扫个盲,微信验证的目的就是你来证明你的服务器地址的有效性,所以带着这个目的我们来看看下面这些问题: URL地址怎么写 纯PHP的代码怎么写 Laravel的代码怎么写 常见的坑是什么 URL地址怎么写...其次,验证代码上面是跟纯PHP大同小异的,唯一的区别是在你处理POST请求的时候一定要让Laravel不要检测CSFR Token,否则会出现错误。...tmpArr, SORT_STRING ); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); # 打印返回结果...有些人看过官方文档之后直接就上代码了,缺忽略了里面的一个参数echostr 随机字符串 而这个恰恰是验证服务器的关键点,你要打印这个返回给微信才能通过验证。但是官方文档说的不够重点。...Laravel路由坑。
[最棒的 7 个 Laravel admin 后台管理系统推荐] 本文首发:《最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云》 Laravel 已经凭借自己的易用性及低门槛成为...涵盖大多数场景需求的 7 个最棒的 Laravel admin 后台管理系统 Laravel Nova - Laravel 官方出品,品质保证 laravel-admin - 国人开发的高品质开源 Laravel...扩展阅读:《最好用的 6 款 Vue 拖拽组件库推荐》 laravel-admin - 国人开发的高品质开源 Laravel 后台管理 [02-laravel-admin] 官网:https://laravel-admin.org...扩展阅读:《Vue 实现 PDF 文件在线预览 - 手把手教你写 Vue PDF 预览功能》 Voyager - 前端 Blade,Model 自动创建 BREAD ,可视化编程 [04-voyager...一切都可以在线完成,在 QuickAdminPanel 的官网配置你的 admin 面板,要什么 Modules 在网页上点击 install 即可,按照流程配置完成后,点击下载,获得属于你自己的定制后台代码
但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性。...但在Laravel框架中内置了”哈希”Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况,这就提高了安全性。...session()->get(‘key’);//获取session里的某个键名 $request->session()->set(‘key’,’default’);//设定一个默认值,当指定键名不存在便返回默认值...$request->session()->all();//返回所有数据 session(‘k’=>$v);//写入session保存数据 以及闪存数据session()->flash()和保留特定数据...配置开发也是非常简单,一般下载框架就可以直接开发,开发代码风格也符合国人思想,所以简单,快捷,适合新手的php框架。
://disc.static.szse.cn”,构成一个完整的PDF下载URL; 下载PDF文件,保存到文件夹:F:\AI自媒体内容\AI炒股\REITs 注意:每一步都要输出信息 PDF文件标题中可能包括一些不符合...window系统命名规则的特殊符号,在重命名PDF文件前要先进行处理; 每下一个PDF文件,就随机暂停3-6秒; 源代码: import requests import json import os import...URL: {pdf_url}") # 处理PDF标题中的非法字符 pdf_title = re.sub(r'[:"/\\|?...*]', '_', pdf_title) # 定义保存路径 save_path = f"F:\\AI自媒体内容\\AI炒股\\REITs\\{pdf_title}.pdf" # 下载PDF文件 pdf_response...(pdf_response.content) print(f"PDF文件已保存到: {save_path}") else: print(f"下载PDF文件失败,状态码: {pdf_response.status_code
也就是说,创建一个集合就这么简单: $collection = collect(['php', 'redis', 'laravel']); 默认情况下, EIoquent查询的结果返回的内容都是 Collection...collection->all(); // ['framework' => 'laravel'] #与大多数集合的方法不同,forget 不会返回修改过后的新集合;它会直接修改原来的集合。...#如果集合包含数组或对象,你应该传入你希望连接的属性的键,以及你希#望放在值之间用来「拼接」的字符串 #集合包含简单的字符串或数值,只需要传入「拼接」用的字符串作为该方法的唯一参数即可 collect...#如果给定项目中的字符串键与原集合中的字符串键匹配,给定的项目的值将会覆盖原集合中的值。...100); $collection->all(); // ['product_id' => 1, 'name' => 'Desk', 'price' => 100] #50.random方法.从集合中返回一个随机项
> '4uuu Nya', 'email' => 'admin@qvq.im', 'password' => bcrypt(str_random(40)), //40位随机数...文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤。...怎么找,首先下载的源码里面有composer.json,compose install 安装完所有组件才算有了所有源码(很关键,安装完后的组件在\vendor下), ?...若成功,则返回 true,失败则返回 false。...所以利用正则将旧缓存路径以及路径字符串长度布置进去 正则表达式 $a = preg_replace('/C:.
本文实例讲述了Laravel框架集成UEditor编辑器的方法。...第一种是使用 composer 进行安装,可推荐参考文章 Laravel-u-editor,个人试过,无法上传图片 … ②....下载对应的源码包 可点击进入下载地址,本人下载的是最新 PHP(UTF-8) 版本 ? ❷....图片文件名 {rand:$num} 解决 刚开始想到使用时间戳加文件原名称来作为名字,但是当有中文字符时无法上传。...Uploader.class.php 大概在 304 行左右,原因是rand() 取值太大可能导致部分环境报错 个人觉得数字的命名不如字母好些,于是代码替换为如下的样子: //TODO 替换随机字符串
领取专属 10元无门槛券
手把手带您无忧上云