Hexo通过github action添加google search console验证

作者:dabaisuv,原文链接:https://dabaisuv.github.io/2023/11/22/Hexo通过github-action添加google-search-console验证

所有权验证 – 文件验证 – 下载验证文件

该文件内容类似:google-site-verification: googlexxxxxxxxx.html
文件名类似:googlexxxxxxxxx.html

目标:在Hexo Github Action 生成的页面源码根目录,添加googlexxxxxxxxx.html文件,内容为google-site-verification: googlexxxxxxxxx.html

简明步骤:修改.github/workflows/pages.yml,在npm run build后加入两行:

1
2
3
4
5
6
7
8
9
10
11
12
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
# 下面是添加的内容
- name: add google verify
run: echo "google-site-verification:googlexxxxxxxxx.html" > ./public/googlexxxxxxxxx.html
# 上面是添加的内容
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v2
with:
path: ./public

注意事项:“验证文件”的内容中的空格得去掉,不然echo函数会出错。

收录的问题和其他验证方法可以参考:https://jactorsue.github.io/blog/2018/04/how-blog-on-githubpages-can-be-searched-by-google.html

Flutter Web 字体白框和白屏解决方案

作者:dabaisuv,原文链接:https://dabaisuv.github.io/2023/11/21/Flutter-Web-字体白框和白屏解决方案

1. 字体白框解决方案

原因是使用canvaskit渲染方式时,代码必须要fonts字体文件支持,而flutter默认会从https://fonts.google.com/ 获取对应语言的fonts,因为某网络原因,该网站访问被限制,导致一直加载不出字体。有两种解决方案。

1.1. 解决方案一

将fonts文件本地化,参考官网解决方案:https://docs.flutter.dev/cookbook/design/fonts

1.2. 解决方案二

强制使用html渲染方式,关于两种渲染方式的区别,参考官网:https://docs.flutter.dev/platform-integration/web/renderers
解决方法参考:https://docs.flutter.dev/platform-integration/web/initialization
简明操作:修改/web/index.html文件,相关代码区段修改为如下,也就是给initializeEngine()函数添加一个renderer参数为字符串'html'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
window.addEventListener('load', function (ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
},
onEntrypointLoaded: function (engineInitializer) {
engineInitializer.initializeEngine({
renderer:'html'
}).then(function (appRunner) {
appRunner.runApp();
});
}
});
});

需要注意的是,使用html渲染方式的话,有些地方可能跟其他平台表现不同。例如:Image()组件的
opacity属性无效,需要使用Opacity()组件包裹来代替(截止flutter3.16.0版本依旧存在,github issue:https://github.com/flutter/flutter/issues/104114 )。

2. 白屏解决方案

原因是flutter正在下载所需文件,如果渲染引擎是canvaskit,那么它默认会从https://unpkg.com/browse/canvaskit-wasm 网站下载,这个文件有6MB左右,因为某些网络原因,下载速度会变成几十KB甚至几KB每秒,偶尔还会断掉,所以flutter就一直白屏。当然白屏还有可能是因为你自己的服务器太慢了,下载网页图片等文件也很慢。还有一种原因就是你的代码有误,这个不在这里讨论,可以根据自己实际情况调试。这里解决第一种原因,也是最常见的一种原因。

2.1. 解决方案一

还是强制使用canvaskit渲染,但是将canvaskit-wasm放在自己的服务器,也就是把它本地化,参考官网解决方案:https://docs.flutter.dev/platform-integration/web/initialization
简明操作:修改/web/index.html文件,相关代码区段修改为如下,也就是给initializeEngine()函数添加一个canvasKitBaseUrl参数为字符串'./canvaskit/'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
window.addEventListener('load', function (ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
},
onEntrypointLoaded: function (engineInitializer) {
engineInitializer.initializeEngine({
renderer:'canvaskit',
canvasKitBaseUrl:'./canvaskit/',
}).then(function (appRunner) {
appRunner.runApp();
});
}
});
});

这里解释以下,之所以设置成'./canvaskit/',是因为flutter build web的时候,会默认在生成的build/web文件夹下生成canvaskit文件夹,里面就有canvaskit-wasm。开发debug模式运行的时候这样设置也有效果,虽然我没找到debug生成的目录。

2.2. 解决方案二

不使用canvaskit渲染,改为使用html,这样就不用下载canvaskit了,也最省心……吧。
方法跟1.1一样。

Windows Server 2012 R2 安全加固

Windows Server 2012 R2 安全加固

一、身份识别

基线项名称 设置密码使用期限策略
检查步骤 在管理工具打开本地安全策略,依次打开:安全设置–账户策略–密码策略,检查密码最长使用期限与密码最短使用期限两项设置
基线合规性判定 密码最长使用期限设置为30-180之间,密码最短使用期限设置为1-14之间即合规,否则不合规
加固步骤 将密码最长使用期限设置为30-180之间,建议值为90,密码最短使用期限设置为1-14之间,建议值为7。
基线项名称 密码复杂性设置
检查步骤 在管理工具打开本地安全策略,依次打开:安全设置–账户策略–密码策略,检查密码必须符合复杂性要求与密码长度最小值两项设置
基线合规性判定 已启用密码必须符合复杂性要求,且密码长度最小值为8及以上即合规,否则不合规
加固步骤 启用密码必须符合复杂性要求,并设置密码长度最小值为8
基线项名称 ‘强制密码历史’设置为 5 - 24 之间
检查步骤 在管理工具打开本地安全策略,依次打开:安全设置–账户策略–密码策略,检查强制密码历史是否大于等于五
基线合规性判定 已启用强制密码历史,且值大于等于五即合规,否则不合规
加固步骤 将强制密码历史设置为 5-24 之间,推荐为5
基线项名称 配置账户锁定策略
检查步骤 在管理工具打开本地安全策略,依次打开:安全设置–账户策略–账户锁定策略,检查账户锁定阈值,账户锁定时间和重置账户锁定计数器
基线合规性判定 账户锁定阈值设置为3-8之间且账户锁定时间和重置账户锁定计数器设置为10-30之间即合规,否则不合规
加固步骤 将账户锁定阈值设置为3-8之间,建议值为5。将账户锁定时间和重置账户锁定计数器设置为10到30之间,建议值为15。

NTFS安全权限

一、NTFS权限概述

  1. 通过设置NTFS权限,实现不同的用户访问不同对象的权限
  2. 分配了正确的访问权限后,用户才能访问其资源
  3. 设置权限放置资源被篡改、删除

二、文件系统概述

文件系统即在外部存储设备上组织文件的方法
常用的文件系统:

  • FAT windows
  • NTFS windows
  • EXT linux

三、NTFS文件系统特点

  1. 提高磁盘读写性能
  2. 可靠性、加密文件系统、可以设置权限
  3. 磁盘利用率、压缩、磁盘配额4. 支持单个文件大于4G

四、NTFS权限配置

  • 若不能更改权限,则先禁用继承权限
文件权限 权限内容
完全控制 拥有读取、写入、修改、删除文件、及特殊的权限
修改 拥有读取、写入、修改、删除文件的权限
读取和执行 拥有读取、及执行文件的权限
读取 拥有读取文件的权限
写入 拥有修改文件内容的权限
特殊权限 控制文件权限列表的权限
文件夹权限 权限内容
完全控制 拥有对文件及文件夹读取、写入、修改、删除文件、及特殊的权限
修改 拥有对文件及文件夹读取、写入、修改、删除文件的权限
读取和执行 拥有对文件夹中的文件下载、读取、及执行文件的权限
列出文件夹内容 可以列出文件夹的内容
读取 拥有对文件夹中的文件下载、读取的权限
写入 拥有在文件夹中创建新文件的权限
特殊权限 控制文件夹权限列表的权限

权限累加: 当用户同时属于多个组时,权限是累加的。
拒绝最大: 当用户权限累加时,如遇到拒绝权限,拒绝最大。
取得所有权: 默认只有管理员组有这个权限。可以将任何文件夹的所有者改为administrator。
强制继承: 对下强制继承父子关系。文件夹右键属性–安全–高级–勾上使用可从此对象继承的……

Windows批处理

@echo off:关闭回显功能,也就是屏蔽过程,建议放置在批处理的首行
rem:添加注释
pause:暂停批处理运行
title:为批处理脚本设置标题
echo:在执行批处理脚本时,可以空一行
set:设置变量,常用与在脚本中的互动值,也可用于查看系统变量
%<变量名>%:取变量的值
:<标签名>和goto <标签名>:用来定义标签名,goto实现跳转。
start <可执行文件>:如果参数为空则启动新的命令行,如果不为空,则启动对应的文件。

例子: 定时关机小程序

1
2
3
4
5
6
7
8
9
10
@echo off
echo ================================
echo.
echo 定时关机小程序
echo.
echo ================================
title 定时关机小程序
set /p time=请输入您要设置的时间(单位/秒):
shutdown -s -t %time% -f
pause

errorlevel:错误等级,0代表上一条命令执行成功

例子:if - else的使用

1
2
3
4
5
6
7
8
@echo off
set /p var1=请输入第一个变量
set /p var2=请输入第二个变量
if "%var1%==%var2%"(
echo 两个字符相同)
else(
echo 两个字符不同
)

例子: goto的使用(无限循环打开新命令行)

1
2
3
:test
start
goto test

例子:用户管理批处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@echo off
title 账户管理工具
:menu
cls
echo =========================
echo.
echo 1.查看所有用户
echo 2.添加用户
echo 3.删除用户
echo 4.修改密码
echo 5.退出程序
echo.
echo =========================
set /p choice=请输入你的选项:
if %choice%==1 goto list
if %choice%==2 goto add
if %choice%==3 goto del
if %choice%==4 goto change
goto exit
:list
net user
pause
goto menu
:add
set /p username=请输入要添加的用户名:
set /p password=请输入要设置的密码:
net user %username% %password% /add > nul 2>nul
if %errorlevel%==0(
echo 账户添加成功
) else (
echo 用户添加失败,请检查下列问题
echo.
echo 添加的账户是否已经存在
echo 密码是否符合安全策略
echo 您是否具有管理员权限
echo.
)
pause
goto menu
:del
set /p usernamedel=请输入要删除的用户
net user %usernamedel% /del > nul 2>nul
if %errorlevel%==0 (
echo 账户删除成功
) else (
echo 账户删除失败,请检查。
)
pause
goto menu
:change
set /p name=请输入要修改密码的用户
set /p passwd=请输入要修改的密码
net user %name% %passwd% >nul 2>nul
if %errorlevel%==0(
echo 密码修改成功
) else (
echo 密码修改失败。
)
pause
goto menu

:exit
exit

Windows用户和组管理

一:用户概述

SID也就是安全标识符(Security Identifiers),是标识用户,组和计算机账户的唯一号码。如果创建账户,再删除账户,然后使用相同的用户名创建另一个账户,则新账户将不具有授权给前一个账户的权力或权限,原因是该账户具有不同的SID号。普通用户的UID是1000开始。
查看当前用户的SID:whoami /user
查看所有用户的SID:wmic useraccount get name,sid
windows server系统上,默认密码的最长有效期42天
账户密码储存位置为C:\windows\system32\config\SAM 该文件再系统运行时锁定的,无法对文件进行操作,且只有system账户可读写

二、常见内置账户

给用户使用的账户:
administrator 管理员账户
guest 来宾账户

计算机服务组件相关的系统账号:
system 系统账户,权限至高无上,真正意义上的管理账户
local services 本地服务账户,权限等于普通用户,主要负责一些网络相关的服务,如DNS客户端服务
network services 网络服务账户,权限比普通用户更小,主要负责系统中的一些本地服务
三、用户管理命令
net user #查看用户列表
net user <用户名> <密码> #改密码
net user <用户名> <密码> /add #创建一个新用户
net user <用户名> /del #删除一个用户
net user <用户名> /active:yes #激活账户
net user <用户名> /active:no #禁用账户

三、组概述

组的作用:简化权限的赋予

组和用户的关系:一个组可以有多个用户、一个用户可以属于多个组

常用的内置组:内置组的权限默认已经被系统赋予
administrators #管理员组
guest #来宾组
users #普通用户组,默认新建用户都属于该组
network #网络配置组
print #打印机组
remote desktop #远程桌面组

四、组管理命令

net localgroup #查看组列表
net localgroup <组名> #查看该组成员
net localgroup <组名> /add #创建一个新的组
net localgroup <组名> <用户名> /add #添加用户到组
net localgroup <组名> <用户名> /del #从组中踢出用户
net localgroup <组名> /del #删除组