如何避免从 Azure Web 托管中托管的文件夹 Codeigniter 访问图像
How avoid access images from folder Codeigniter Hosted in Azure web hosting
我的文件夹结构是这样的
application
system
public
uploads > images
index.php
----------
我想限制 非用户访问上传文件夹中的图片,方法是在 URL 中输入路径(Ex - www.exapmple.com/uploads/images/new.png ).我的主机是 Azure,我认为它也不支持 .htaccess。
Azure 使用 IIS 托管您的 Web 应用程序。所以要达到你的要求,你可以先在/wwwroot
文件夹下添加名为web.config
的IIS配置文件,然后在<system.webServer>
.
中添加以下元素
<security>
<requestFiltering>
<hiddenSegments>
<add segment="uploads"/>
</hiddenSegments>
</requestFiltering>
</security>
最后 web.config
看起来像:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="uploads" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
这将阻止所有用户直接访问 /uploads
文件夹及其内容。
编辑:
您可以使用虚拟目录 将上传文件夹中的图像显示到public。
循序渐进
- 在 Azure Portal 中,打开 Web 应用程序的边栏选项卡。
- 单击“设置”菜单下的应用程序设置。
- 滚动到虚拟应用程序和目录。
- 添加一个虚拟目录
/public
,然后输入物理路径site\wwwroot\uploads\images
.
- 单击保存。
图片如下:
现在您可以在 URL www.exapmple.com/public/new.png
中输入路径来访问实际位于 site\wwwroot\uploads\images
文件夹下的图像。
我将下面的代码添加到上传文件夹中作为 web.config(因为 .htaccess 文件在 Azure 托管中不起作用)。之后我将所有图像转换为 base64 encoding。对于图像视图,我使用了 base64 解码。通过这个解决方案,我轻松地解决了我的问题。
<location path="Admin">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
我的文件夹结构是这样的
application
system
public
uploads > images
index.php
----------
我想限制 非用户访问上传文件夹中的图片,方法是在 URL 中输入路径(Ex - www.exapmple.com/uploads/images/new.png ).我的主机是 Azure,我认为它也不支持 .htaccess。
Azure 使用 IIS 托管您的 Web 应用程序。所以要达到你的要求,你可以先在/wwwroot
文件夹下添加名为web.config
的IIS配置文件,然后在<system.webServer>
.
<security>
<requestFiltering>
<hiddenSegments>
<add segment="uploads"/>
</hiddenSegments>
</requestFiltering>
</security>
最后 web.config
看起来像:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="uploads" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
这将阻止所有用户直接访问 /uploads
文件夹及其内容。
编辑:
您可以使用虚拟目录 将上传文件夹中的图像显示到public。
循序渐进
- 在 Azure Portal 中,打开 Web 应用程序的边栏选项卡。
- 单击“设置”菜单下的应用程序设置。
- 滚动到虚拟应用程序和目录。
- 添加一个虚拟目录
/public
,然后输入物理路径site\wwwroot\uploads\images
. - 单击保存。
图片如下:
现在您可以在 URL www.exapmple.com/public/new.png
中输入路径来访问实际位于 site\wwwroot\uploads\images
文件夹下的图像。
我将下面的代码添加到上传文件夹中作为 web.config(因为 .htaccess 文件在 Azure 托管中不起作用)。之后我将所有图像转换为 base64 encoding。对于图像视图,我使用了 base64 解码。通过这个解决方案,我轻松地解决了我的问题。
<location path="Admin">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>