php 像图片什么的只要路径对都会下载,那PHP源码会不会被下载?那像腾讯相册那样的照片加密是怎么实现的?
php 像图片什么的只要路径对都会下载,那PHP源码会不会被下载?那像腾讯相册那样的照片加密是怎么实现的?
Apache:
<code>DirectoryIndex index.html index.php LoadModule php7_module modules/libphp7.so AddHandler application/x-httpd-php .php </code>
Nginx:
<code>location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/tmp/php-fpm.sock; } </code>
给Apache和Nginx配置好PHP支持后,访问PHP文件时,Apache和Nginx会把PHP请求交给PHP模块或PHP-FPM处理,然后把处理结果返回给浏览器,所以浏览器是不能下载到PHP源代码的.
至于腾讯相册加密的照片,经过程序身份验证后才能显示和下载.
<code><?php auth(); //用户身份认证 header('Content-type: image/png'); //图片 readfile($file_path); //PHP输出图片 </code></code>
这些图片存储的目录可以不在网站目录里,这样用户是无法通过访问URL来读取这些图片的.
如果在网站目录里,则需要配置Apache和Nginx拒绝访问这些目录:
Apache 2.4 .htaccess:
<code>Require all denied </code>
Nginx:
<code>location ^~ /private/ { deny all; } </code>
下载文件和要求PHP脚本渲染网页,对服务器而言都是等同的HTTP请求。
服务器肯定会用扩展名识别文件类型,来决定原样下发文件内容,还是调用PHP解释器。一般不必担心PHP代码被下载下来。
实际上真正的危险是反过来的:即用户上传一个PHP脚本到服务器,然后通过HTTP请求去试图执行之,从而获取运行服务器端代码的特权。所以对于带上传的应用,有以下各种防护方法:
一般会选择一种或几种方法实现。只要方案合适,服务器的安全是足够得到保障的。
是否会下载,是通过如Apache
Ngnix
等服务器软件进行设置的。
一般情况下,PHP
文件都会被解析,但也不是所有。比如在上传文件夹,一般为了安全,会将其设置为不可解析。
照片加密
应该就是如此吧。