- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Laravel (ocotber CMS) 开发我的项目并使用 Spatie URL Signer包来保护我的文件与有限的生命链接。我将文件上传到被 .htaccess
文件列入黑名单的 protected 目录。
我的 .htaccess:RewriteRule ^storage/app/uploads/protected/.* index.php [L,NC]
我的文件上传到:/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf
生成带有有效期的链接的代码:UrlSigner::sign('http://localhost:8888/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf');
生成的链接如下所示:http://localhost:8888/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf?expires=1488905432&signature=fd82b06725096b8e6c43221a9616e420
我还添加了使用包的中间件来保护链接的路由处理代码。Route::get('protected-route', ['middleware' => 'signedurl', function () {
返回'你好 secret 世界!';
}]);
但是生成的链接无法下载。我确实怀疑这是因为我将文件放在 protected 文件夹中。当我使用公用文件夹尝试此操作时,该文件可用。但是这样我的文件就没有保护了。因为正如您在上面看到的那样,生成的链接包含我的文件夹的路径。
最佳答案
由于您正在处理私有(private)文件,因此通常最好不要让文件系统处理这些事情。相反,让 Laravel 来做,这样你就可以做所有你需要的检查,而你永远不必暴露实际的文件:
路线:
// set up a route group with your signedurl middleware
Route::group(['middleware' => 'signedurl'], function () {
// create a new route which references a controller
// the {path} is the location of the file
// so your URLs would look something like
// http://localhost:8888/media/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf
Route::get('media/{path}', 'MediaController@getPrivateFile');
// you can also do some validation using
// ->where('path', '.*?');
});
然后在你的新 Controller 中:
class MediaController extends Controller
{
public function getPrivateFile(Request $request, $pathToFile)
{
// check if file exists
// if (file_exists) {
// # code...
// }
return response()->download($pathToFile);
}
}
这样您的文件可以保持私密,您可以运行您的中间件,并且您可以在 Controller 中进行任何您需要的额外检查。
关于php - 通过使用 Spatie URL-Signer 生成有限生命周期的链接来保护文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631533/
我们在 Java 应用程序中更新了安全证书,突然我们开始收到下面提到的异常: java.lang.SecurityException: class "org.hibernate.cfg.Configu
我有一个在浏览器中运行并从 Javascript 调用的小程序。有 2 个类:PortalLauncher 和 ParamSplitter,它们位于默认包中。 Javascript 调用 Portal
我在 eclipse 中使用 OSGi 项目运行 JUnit 测试,我遇到了这个异常: java.lang.SecurityException: class "org.eclipse.core.run
我正在开发一个给 PDF 加水印的小工具,它适用于某些 PDF,但对某些其他 PDF 会崩溃。 我正在使用 iText 库和 bouncycaSTLe(依赖项) pom.xml:
我花了 2 天时间试图解决这个问题,但找不到解决办法或至少找不到解决方案: Exception in thread "main" java.lang.SecurityException: class
如果黑客可以调用或调用某些程序功能,我如何在 Solana Anchor 中进行测试? 是通过更改 signers 数组中的第一个元素来实现的: await program.rpc.initializ
iPhone 连接到运行最新 iTunes 版本的 Mac,我 100% 确定她的 UDID 在配置文件中。她的iPhone没有越狱,我们甚至恢复了出厂设置。 我在这一台 iPhone 上安装我们的开
我使用 ant 为 web-start 部署签署我的 jars。Ant.signjar 在 web-start 签名时非常慢。如何加快签名过程? 最佳答案 我找到了一种可能的解决方案。 在构建脚本的早
我已经为 JAVA 创建了部署规则集。该文件是使用证书自签名的。为了使用此规则集,您需要将证书导入 JAVA > Security > Certificates > Signer CA。 如果我手动执
场景:我在 Windows Server 2012r2 上使用 PowerShell 生成根证书,并希望使用它在动态生成(和销毁)的开发/测试环境中签署新创建的中间证书和 Web 证书。这些脚本是远程
遇到一个让我抓狂的问题。在 AEM (6.0 SP3) 中实现 Amakai Edgegrid 身份验证,它会阻止我的主要服务包启动,因为它不是 OSGi 包。 与 this issue 中指出的问题
我在 Nginx 上设置 OCSP 装订并收到错误 OCSP_basic_verify() failed (SSL: error:27069076:OCSP routines:OCSP_basic_v
我正在使用 Laravel (ocotber CMS) 开发我的项目并使用 Spatie URL Signer包来保护我的文件与有限的生命链接。我将文件上传到被 .htaccess 文件列入黑名单的
今天我发现自己无法在我的计算机上恢复 NuGet 包。这样做会产生类似以下的错误: Myproject.csproj : error NU3034: Package 'SomePackage 1.2.
我需要使用 SignServer 代表客户端创建数字签名。我对两个问题有点困惑。 是否每个客户都需要唯一的证书,还是可以为所有客户使用一个证书? 我可以使用 SignServer 创建数字签名证书吗,
当我尝试使用 PKCS11 签名时抛出此异常。我尝试更改字母的大小写,认为这可能是问题所在,但事实并非如此。 最佳答案 此问题的真正原因与我的情况下的异常消息并不对应,然后我意识到这只是 PKCS11
我正在使用node-mysql2 库与 AWS.RDS.signer 结合使用. 我有以下函数,它创建一个连接池以重用连接: const createPool = () => new Promise(
我正在使用 Liberty 16.0.0.4,我想从 Facebook 帐户图像中获取图像,所以我运行了下一个命令以将 Facebook 证书添加到 Liberty 服务器 keytool -imp
我正在尝试实例化一个 X509Certificate 对象,但我一直遇到相同的 CryptographicException,并显示错误消息: "Cannot find the original si
我正在尝试使用 Lambda 生成并返回签名的 cookie,以便我的 iOS 应用程序可以使用该 cookie 通过 CloudFront 访问受限文件。 我认为这应该可以使用 Signer 类:h
我是一名优秀的程序员,十分优秀!