首页 » PHP教程 » PHP封闭框架主页技巧_php手把手教你做网站三十二网站开拓安然性留心事项

PHP封闭框架主页技巧_php手把手教你做网站三十二网站开拓安然性留心事项

访客 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

如果有没有考虑到的,欢迎留下您的想法,让我们一起把网站做得更好、更安全。

1、在public下边新建文件夹,名称自己随意设定(这里假设名称web)。

PHP封闭框架主页技巧_php手把手教你做网站三十二网站开拓安然性留心事项

都知道网站内有固定的public文件夹,如果只是放到public里边和放到根目录也没啥差异;文件夹的名称不要有什么规律(单词之类的),我们越好记,别人就越随意马虎猜到;将tp程序文件放到web文件夹内,不是说tp的系统程序不屈安,而是用的人多创造漏洞的可能就大,藏起来,安全性会得到一些提高;前台程序也放到web文件夹下的时候,直接访问网站是不能访问的,由于根目录下没有首页文件,以是在根目录下新建入口文件:index.php;如果只是新建index.php作为首页文件,而不是作为入口,url重写规则要做一下改变;如果是程序员做多个网站,最好每个网站web文件夹名称都不相同,可以随机几个字母;

图1 tp5 程序都放到了public文件夹内

PHP封闭框架主页技巧_php手把手教你做网站三十二网站开拓安然性留心事项
(图片来自网络侵删)

图2 tp6程序到了public内

如图,觉得整洁了不少

1)根目录下入口文件index.php

tp5入口文件

<?phpdefine('APP_PATH',__DIR__.'/public/web/application/');define('ROOT_PATH',realpath(__DIR__)."/");// 加载框架勾引文件require __DIR__ . '/public/web/thinkphp/start.php'; ?>

解释:

APP_PATH,和require的路径都加上了/public/web

tp6入口文件

namespace think;require __DIR__ . '/public/web/vendor/autoload.php';// 实行HTTP运用并相应$http = (new App())->http;$response = $http->name('index')->run();$response->send();$http->end($response);

2)入口文件对应iis重写规则

<rule name="main" stopProcessing="true"><match url="^(.)$" ignoreCase="false" /><conditions logicalGrouping="MatchAll"><add input="{HTTP_HOST}" pattern="^(.)$" /><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/public/web/index.php/{R:1}" /></rule>

解释:

<match url="^(.)$" ignoreCase="false" />我以前直接用彷佛有的public下的css被重写了,现在用的又没问题,忘却以前是什么情形下涌现的了,如果直接用有缺点,可以考试测验换成<match url="^((?!public).)$" ignoreCase="false" />;<conditions logicalGrouping="MatchAll">内的设计,我个人理解便是文件存在不重写;

3)根目录下index.php只是作为网站的首页访问

这个时候文件内容是什么,没有任何差异,可以是空缺,反正填写任何内容都不会显示出来。

4)根目录下index.php 对应url重写规则

<rule name="main" stopProcessing="true"><match url="^((?!public).)$" ignoreCase="false" /><action type="Rewrite" url="/public/web/index.php/{R:1}" /></rule>

解释:

浸染是打消掉public文件夹全部重写,public/web/文件夹下要有入口文件。

5)网站根目录下有的时候天生sitemap.xml

如果这个时候利用的是第4步的重写规则,直接访问http://www.abc.com:8080/sitemap.xml,是被重写的,须要我们在规则内打消一下sitemap

<rule name="main" stopProcessing="true"><match url="^((?!(public|sitemap)).)$" ignoreCase="false" /><action type="Rewrite" url="/public/web/index.php/{R:1}" /></rule>

2、文件夹关闭目录浏览

常日默认的可能便是禁止目录浏览的,可以自己测试一下 网址/你的文件夹名称,如果能看到该文件夹下的文件或者子文件夹解释没有禁止目录浏览;如果不能操控做事器禁止目录浏览,可以在该文件夹下加一个首页文件(index.php或者index.html等等,根据你的默认首页文件名),该文件可以是空缺内容;

3、图片上传

如果利用的是tp自带的上传,可能这些都有判断,我是用的以前的,安全性靠自己去提高。

1)图片改了扩展名上传

上传往后进行判断,getimagesize("E:\phpweb\about.jpg");可以返回图片的宽度,高度,mime类型,图片的mime类型有image/gif,image/jpeg,image/png其他的,比如:bmp图片,险些用不到可以不考虑。
通过判断类型是否这3个里边的,得出结论是否是图片,如果不是,unlink()删除该图片;

$pic="E:\phpweb\about.jpg";$picinfo=getimagesize($pic);$mimearr=array('image/gif','image/jpeg','image/png');$mime=$picinfo['mime']??'';if(!in_array($mime,$mimearr)){@unlink($pic);echo json_encode(array('error'=>'0001','msg'=>"可疑文件,禁止上传"),JSON_UNESCAPED_UNICODE);exit;}

2)图片文件包含了木马

上传之前可以判断,通过获取tmp_name判断图片内是否有危险字符(来源网络);在php.ini配置了upload_tmp_dir存放临时上传的文件,上传完成往后会移动到我们设定的目录;tmp_name便是这个临时文件名称;

if (file_exists($tmp_name)) {$resource = fopen($tmp_name, 'rb');fseek($resource, "0");$fileSize = filesize($tmp_name); if ($fileSize > 512) { // 若文件大于521B文件取头和尾$hexCode = bin2hex(fread($resource, "512"));fseek($resource,$fileSize-512);$hexCode .= bin2hex(fread($resource, 512)); }else{ // 取全部 $hexCode = bin2hex(fread($resource, $fileSize)); }if (preg_match("/(3c25.?28.?29.?253e)|(3c3f.?28.?29.?3f3e)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)){$status = 5;}else{$status = 0; }}

解释:

$status安全码,返回0正常,5包含了可疑代码;

4、富文本编辑器默认所在文件夹

有的编辑器,集成了很多功能,直接处理上传,上传的图片,也会在编辑器的文件夹内,

我们须要变动编辑器默认的文件夹名称,可以是任意的最好不要有什么规律,防止有漏洞被人直接网址访问进行危险操作;如果上传的图片是在编辑器所在文件夹,要进行修正,不能让别人通过查看文章内的图片路径得到编辑器所在文件夹;

5、管理员上岸密码缺点次数限定

在后台上岸入口暴露往后,防止有人暴力破解,可以限定该账号缺点次数,例如:缺点3次,该账号锁定,当天不能再次上岸;验证码觉得浸染不是很大,很多软件都可以自动识别验证码;

6、上岸缺点提示

不要账号缺点提示账号缺点,密码缺点就提示密码缺点,这样会导致破解的人知道是账号或者密码错了;缺点提示该当是:账号或者密码;平时测试的时候,我们会常用admin或者admin888之类的账号,密码也都是一样的,在网站正式上线往后,一定要记得改掉这些常用的账号、密码;

我们习气的账号密码,别人猜起来就会随意马虎。

7、过滤危险字符防止sql注入

URL参数、文章搜索、留言板,我利用的是360供应的防sql注入类(Webscan)。

IndexController.php

class IndexController extends CmController {}

CmController.php

use checkdanger\Webscan;class CmController extends BaseController { public function __construct(){ header("Content-Type:text/html; charset=utf-8"); $webscan = new Webscan(); if ($webscan->check()) { echo '系统检测到有攻击行为存在!
'; exit; } }

解释:

所有的页面先继续了CmController.php,CmController.php继续BaseController,布局函数内进行判断包含危险性字符,上岸过期等等。

8、不要显示详细缺点信息

tp5的调试模式:在application文件夹config.php,app_debug改为false,缺点提示页面在thinkphp/tpl/think_exception.tpl;tp6调试模式:在.env文件APP_DEBUG改为false;config文件夹下app.php文件拉到最下边,show_error_msg改为false;缺点提示页面vendor\topthink\framework\src\tpl/think_exception.tpl;
标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读1 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读1 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读1 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读1 评论0