Discuz如何实现全文搜索?还在用sphinx么?

discuz安装升级

Discuz的搜索默认是只搜索标题的,如果想搜索正文,并不支持。通用的解决方案是开启sphinx,对于万全不懂技术的站长稍微有些麻烦。

但是现在这个问题解决了!不知道从哪一版开始,已经支持了全文搜索,不用开启sphinx。

本文环境版本:Discuz! X3.4 R20210119 UTF-8

步骤1、后台在用户组管理中开启“允许全文搜索”

Discuz如何实现全文搜索?还在用sphinx么?
Discuz开启搜索

步骤二、需要让用户知道如何用高级搜索

Discuz如何实现全文搜索?还在用sphinx么?
discuz搜索

centos7和CentOS8 rc.local 开机不自动执行的解决方法

centos7和CentOS8 rc.local 开机不自动执行的解决方法

CentOS 运维过程中 在 /etc/rc.d/rc.local 写入开机需要运行的命令,是在CentOS5-CentOS6 中常见做法。但是在CentOS7中,却出现了 rc.local 中命令,系统启动后却不执行的情况。
原因分析
rc.local 是 Sysvinit技术用于CentOS5-6的"init"进程在启动过程中最后执行的任务。但是众所周知,CentOS7和CentOS8 是使用了Systemd技术启动,开机不会运行init进程。为了兼容,CentOS 7 官方提供的方法是默认提供了一个名为“rc-local” 的 systemd 服务,负责系统启动后执行 rc.local 中的命令。但是有一个前提: /etc/rc.d/rc.local 必须是可执行(默认是不可执行的)。
解决方案
“激活” systemd 的"rc-local" 服务
(1) 在 /etc/rc.d/rc.local 写入你需要执行的linux命令
# vim /etc/rc.d/rc.local
#!/bin/bash
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
# 写入你要执行的命令
(2) 给 /etc/rc.d/rc.local 添加 可执行权限
# chmod a+x /etc/rc.d/rc.local
(3) 将 rc-local 服务设置成开机启动(默认状态是 static,会被其他service服务调用执行。不过还是修改一下,以防那个服务被停用就牵连了)
# systemctl enable rc-local
附注
/usr/lib/systemd/system/rc-local.service 文件内容解释
[Unit]
# 服务描述
Description=/etc/rc.d/rc.local Compatibility
# 只有 rc.local 这个文件有可执行权限才执行service(这是 rc.local 开机不启动的原因!)
ConditionFileIsExecutable=/etc/rc.d/rc.local
# 如果 network 需要启动,则等待network启动之后再启动本服务
After=network.target
[Service]
# Type字段定义启动类型。
# forking的意义: ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
Type=forking
# 启动命令
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0Remain
# RemainAfterExit字段设为yes,表示进程退出以后,服务仍然保持执行。
# 这样的话,一旦使用systemctl stop命令停止服务,ExecStop指定的命令就会执行,从而重新开启触摸板。
RemainAfterExit=yes

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况

万全电动汽车充电桩

如题,由北京一路向西向北出发,目的地锡林浩特,路上的充电桩情况如下:

官厅,出了北京的第一个服务区:

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
官厅电动汽车充电桩
北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
官厅电动汽车充电桩

服务区的右侧就是充电桩,淡季没有人,电价非常便宜,算下来1度电不到1.5元。

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
官厅电动汽车充电桩

 

这里4个充电桩,有一个坏的。需要下载国家电网的《e充电》App

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
官厅电动汽车充电桩

 

下花园~万全,每个站是4个充电桩,淡季没有人。

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
万全电动汽车充电桩

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况

 

张北,情况都一样:

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况

当前所在的位置是张石高速张北服务区快充站,归屈张家口市张北具,下一充电站是察北服务区快充站,归属张家口市张北,距离本站约 33.5 公里。

察北。

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况
察北电动汽车充电桩

北京一路向西北方向回内蒙古-官厅-下花园-万全-张北-察北-电动汽车充电桩情况

您当前所在的位置是张石高速察北服务区快充站,归属张家口市张北县,下一充在内蒙古境内。

自此,出了河北,进入内蒙古就没有充电桩了。从察北到锡林浩特大约325公里,电动车必须一步到位。

ubuntu操作系统下使用ufw防火墙禁用封ip

ubuntu操作系统下使用ufw防火墙禁用封ip

禁止ip语法:
sudo ufw deny from {ip-address-here} to any

禁止来自 192.168.1.5 的所有包:
sudo ufw deny from 192.168.1.5 to any

也可以拒绝来自 一个ip的 的包:
sudo ufw reject from 202.54.5.7 to any

以上reject会返回拒绝的消息,但是drop没有任何信息。

先看ufw的顺序号:
$ sudo ufw status numbered
$ sudo ufw status

拒绝指定ip和端口:
ufw deny from {ip-address-here} to any port {port-number-here}
ufw deny from 202.54.1.5 to any port 80

To Action From
-- ------ ----
[ 1] 192.168.1.10 80/tcp ALLOW Anywhere
[ 2] 192.168.1.10 22/tcp ALLOW Anywhere
[ 3] Anywhere DENY 192.168.1.5
[ 4] 80 DENY IN 202.54.1.5

拒绝ip,端口,协议的语法:

sudo ufw deny proto {tcp|udp} from {ip-address-here} to any port {port-number-here}

$ sudo ufw deny proto tcp from 202.54.1.1 to any port 22
$ sudo ufw status numbered

拒绝一个子网:
$ sudo ufw deny proto tcp from sub/net to any port 22
$ sudo ufw deny proto tcp from 202.54.1.0/24 to any port 22

删掉某一条规则,即查询并删除那个数字
$ sudo ufw status numbered
$ sudo ufw delete NUM
$ sudo ufw delete 4

Sample outputs:

Deleting:
deny from 202.54.1.5 to any port 80
Proceed with operation (y|n)? y
Rule deleted

如果规则不生效,那就是顺序号问题,可以收工填入
$ sudo vi /etc/ufw/before.rules
从“End required lines”下填入:
-A ufw-before-input -s 178.137.80.191 -j DROP
# Block ip/net (subnet)
-A ufw-before-input -s 202.54.1.0/24 -j DROP
保存后重启ufw:
$ sudo ufw reload

以下是直接插到第一条的规则,并可以做注释
$ sudo ufw insert 1 deny from {BADIPAddress-HERE}
$ sudo ufw insert 1 deny from 178.137.80.191 comment 'block spammer'
$ sudo ufw insert 1 deny from 202.54.1.0/24 comment 'Block DoS attack subnet'

批量设置的方法:

# add subnet too #
IPS="192.168.2.50 1.2.3.4 123.1.2.3 142.1.2.3 202.54.1.5/29"
for i in $IPS
do
sudo ufw insert 1 deny from "$i" comment "IP and subnet blocked"
done

另外一个方法是从文件读取,例如一个文件:blocked.ip.list
203.1.5.6
204.5.1.7
45.146.164.157
2620:149:e0:6002::1f1
185.38.40.66
185.220.101.0/24

在bash里用loop循环:

while IFS= read -r block
do
sudo ufw insert 1 deny from "$block"
done < "blocked.ip.list"

gitlab调用sonar进行代码安全检查的CI/CD配置

gitlab
  1. sonar中建立token:

    http://8.8.8.8:9000/account/security/

gitlab调用sonar进行代码安全检查的CI/CD配置
生成的串对应关系:
SONAR_LOGIN 5164e9f1fde59212313123123123ee3cfc49212b0a4
SONAR_PROJECTKEY asfaffa-php-check

gitlab设置CI/CD变量:

gitlab调用sonar进行代码安全检查的CI/CD配置

gitlab项目中编写.gitlab-ci.yml 脚本:

stages:
  - analysis

sonar_code_analysis:
  stage: analysis
  image: emeraldsquad/sonar-scanner
  variables:
    SONAR_URL: http://8.8.8.8:9000
  only:
    - master
  script:
    - sonar-scanner
      -Dsonar.host.url=$SONAR_URL
      -Dsonar.login=$SONAR_LOGIN
      -Dsonar.analysis.mode=preview
      -Dsonar.gitlab.project_id=$CI_PROJECT_PATH
      -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
      -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
      -Dsonar.projectKey=$SONAR_PROJECTKEY
      -Dsonar.sources=.
      -Dsonar.exclusions=vendor/**

哪些CA机构通过了WebTrust的认证?

https证书验证方式

“很多CA机构表示自己的品牌、SSL证书很牛掰,那是否有公信力的第三方认证呢?” 答案是肯定的,那就是国际权威的WebTrust认证。

哪些CA机构通过了WebTrust的认证?

WebTrust是什么?

WebTrust 是由全球两大著名注册会计师协会 AICPA(美国注册会计师协会)和 CICA(加拿大注册会计师协会)共同制定的安全审计标准,也是电子认证服务行业中唯一的国际性认证标准,主要对互联网服务商的系统及业务运作逻辑安全性、保密性等共计七项内容进行近乎严苛的审查和鉴证

WebTrust 认证是各大主流的浏览器、微软等大厂商支持的标准,是规范 CA 机构运营服务的国际标准。在浏览器厂商根证书植入项目中,只有通过 WebTrust 国际安全审计认证,根证书才能预装到主流的浏览器而成为一个全球可信的CA认证机构,从而实现浏览器与数字证书的无缝嵌入。

通过WebTrust认证的知名CA机构

目前Sectigo、Digicert、GlobalSign、GeoTrust、Entrust等国际知名CA机构以及国内认证机构如CFCA等都获得了WebTrust的认证。

以上提到的,且通过WebTrust认证的CA机构颁发的SSL证书是深受全球用户信任和喜欢的数字证书:

一、Digicert SSL证书

Digicert继2017年收购Symantec(赛门铁克)后,成为全球首屈一指的互联网安全品牌,也是行业内最受认可和信任的SSL安全证书品牌,为用户和服务端之间提供安全的网络信息通道。

Digicert SSL证书致力于打造高端服务器证书品牌,只提供高端的SSL证书:OV SSL证书和EV SSL证书,深受大型企业、电商、金融类网站喜爱,全球500强企业、百余家银行以及94%全球领先电商平台都在使用Digicert SSL证书。

哪些CA机构通过了WebTrust的认证?

二、GeoTrust SSL证书

GeoTrust是全球第二大数字证书颁发CA机构,也是身份认证和信任认证领域的领导者,是Digicert旗下的一款优质的、高性价比的SSL证书品牌,涵盖DV SSL证书、OV SSL证书、EV SSL证书、单域名SSL证书、多域名SSL证书、通配符证书。全球150多个国家有超过10万个用户在使用GeoTrust SSL证书,而且该品牌证书支持中文域名和显示中文名称,深受国内用户喜爱。Geotrust是全球第二大的SSL证书厂商,在全球150多个国家都有其客户。该公司为企业网站以及在线交易提供加密服务。Geotrust提供多种类型的SSL证书来满足各个规模企业的数据加密需求。Geotrust的产品以证书响应速度快,以及价格合理而著称。支持256位加密技术,同时能够为不同类型的证书提供不同的网站签章。
Digicert的证书能够被99.9%浏览器识别,确保最大的兼容性。其产品也代表了新一代的数据加密技术,能够对移动平台提供很好的支持。

哪些CA机构通过了WebTrust的认证?

三、Sectigo SSL证书

Sectigo拥有超过20年的数字证书行业经验,证书发行量全球第一,是全球优秀的网络安全服务提供商和SSL证书服务商之一,Sectigo证书产品类型丰富,满足各类网站不同的安全需求,极具性价比,签发速度快,深受中小型企业的欢迎。其子品牌PositiveSSL证书因其价格便宜,安全性高,也成了广大个人站点和小微企业的首选品牌证书。

哪些CA机构通过了WebTrust的认证?

四、GlobalSign SSL证书

作为信息安全领域的佼佼者,GlobalSign自1996年起开始颁发可信赖的SSL数字证书,为企业,个人提供安全可靠的网络安全解决方案,包括DV, OV, 还有最高级别的EV证书,并支持RSA,ECC等多种加密算法,提供中国技术支持团队,本地化服务好,其SSL证书得到了各大互联网电商企业和IT公司的高度认可,客户包括阿里巴巴、京东、百度等。

哪些CA机构通过了WebTrust的认证?

五、Entrust SSL证书

Entrust是加拿大CA品牌,网络安全领域的领先者,为银行,电商,证券等企业提供在线交易或网络交易的加密和验证服务。Entrust SSL产品,面向高端用户市场,仅提供OV,EV类型证书,功能上有单域名版,双域名版,通配符,以及多域名通配符。特别是EV型证书,最严格的验证流程,最高安全级别,市场占有率很高,全球排名靠前的世界大银行都选用,也是全球多家电子商务网站的首选。

哪些CA机构通过了WebTrust的认证?

六、CFCA SSL证书

中国金融认证中心(China Financial Certification Authority,简称CFCA)是经国际权威的WebTrust认证以及中国人民银行和国家信息安全管理机构批准成立的国家级CA,也是国内一流水平的电子认证服务机构和信息安全综合解决方案提供商。旗下自主研发的纯国产SSL证书,包括OV, EV SSL证书,不仅可支持国密算法(SM2/SM3),满足政府/金融等组织、机构国家监管需求,也得到全球各大浏览器,操作系统及设备的认可。

哪些CA机构通过了WebTrust的认证?

总之,想要为网站部署SSL证书进行HTTPS加密,请选择WebTrust国际权威认证的安全可信任的CA机构。

 

如何删除chrome和firefox浏览器上的HSTS设置并清除它们?

hsts浏览器安全

HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互。这能够帮助防止协议降级攻击和cookie劫持。

在使用hsts的网站,可能遇到如下情况:

“隐私错误:你的连接不是私人的”(NET::ERR_CERT_AUTHORITY_INVALID)。
或者“NET::ERR_CERT_COMMON_NAME_INVALID。”

有时候需要去掉hsts进行临时解决,以下是不同浏览器的解决方案。

一、如何删除Chrome中的HSTS设置:

1. 导航到chrome://net-internals/#hsts
这是Chrome用来管理你的浏览器的本地HSTS设置的UI的web界面。
2. 首先,为了确认Chrome记录了域名的HSTS设置,请在页面底部的查询域名部分输入主机名。点击查询。如果查询框返回已找到,且同时设置信息列举在了下面,那么域名的HSTS设置就保存在了你的浏览器中。

如何删除chrome和firefox浏览器上的HSTS设置并清除它们?
请注意,这是一个非常敏感的搜索。请只输入主机名,比如www.moneyslow.com或moneyslow.com,不要输入任何相关的协议或路径。
3. 在删除域名部分中输入相同的主机名并点击
你的浏览器将不再强迫这个网站进行HTTPS连接!你可以通过刷新或导航到页面来测试它是否能够正常工作。
请注意,根据网站所提供的HSTS设置,你可能需要指定恰当的子域名。例如,staging.yoursite.com的HSTS设置可能需要与yoursite.com区分开来,因此视情况而定,你可能需要重复这些步骤。

二、如何删除Firefox中的HSTS设置:

我们将讲述两种不同的删除Firefox中的HSTS设置的方式。第一种方式应当可以适用于大多数情况——但如果有需要,我们也包括了一个手动选项。
1. 关闭Firefox中所有打开的标签。
2. 利用键盘快捷键Ctrl + Shift + H(Mac上为Cmd + Shift + H)打开完整的历史窗口。在以下步骤中,你必须使用到这一窗口或侧边栏。
3. 找到你想要为之删除HSTS设置的网站——如果需要,你可以在右上角搜索该网站。
4. 从项目列表中右键点击该网站,并点击忘记这个网站(或者交清除此站点信息)。这将会清除这个域名的HSTS设置(以及其他缓存数据)。

如何删除chrome和firefox浏览器上的HSTS设置并清除它们?
firefox清除hsts

5. 重启Firefox并访问该网站。你现在应当能够通过HTTP/中断的HTTPS访问这一网站了。如果这些说明行不通,那么你可以尝试以下手动方式:
针对Firefox的手动方式
如果上述步骤行不通,你可以尝试以下方式。
首先,通过你的操作系统的文件资源管理器来定位你的Firefox配置文件。你可以通过导航到about:support来找到Firefox的这一文件夹。
向下滚动到页面中部,在应用程序基本要素部分,你将看到配置文件夹。点击打开文件夹。
现在关闭Firefox,因此浏览器便不会覆盖我们将要进行修改的任何设置。
在你的配置文件夹中,找到并打开文件SiteSecurityServiceState.txt。该文件包含了你之前访问的域名的HSTS和HPKP(Key Pinning,一种独立的HTTPS机制)缓存设置。这些设置可能会有点杂乱无章。
搜索你想要为之清除HSTS设置的域名,并将它从文件中删除。每个条目都有域名。删除从想要的域名开始到下一个列出的域名中的所有的条目。还有一种方法,你可以将现有文件从a .txt重命名为a .bak(为了保存现有的文件,以防万一)并允许Firefox在下次启动时创建一个全新的文件。
以下是一个简单的HSTS列表示例。
www.thesslstore.com:HSTS          0               17312   1527362896190,1,0
正如前面所提到的,这一文件的格式可能会很混乱。以下是我的配置中的一个示例。每个域名的设置都以独特的颜色显示了出来,以清楚地区分开来。在这种情况下,之前域名的部分设置在开头会显示为红色:
如何删除chrome和firefox浏览器上的HSTS设置并清除它们?

 

Discuz!3.4升级后,贴子内容使用Unicode编码会出现直接显示源码问题

discuz

转自:https://freexyz.cn/cms/78457.html

打开:source\function\function_core.php
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
下面加入
if(strpos($string, '&#') !== false) {
$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);
}
保存文件 覆盖 更新缓存 刷新贴子

Discuz后台安全增强admin.php

discuz

本文转自 https://freexyz.cn/cms/19343.html

Discuz!默认的后台路径是 http://你的域名/admin.php

因此很多站长不希望后台直接暴露出来让一些不法用户尝试登陆后台,造成一些安全隐患;
隐藏后台路径一般有两种思路,第一种就是直接修改admin.php文件名称,但是这种方式,前后台要修改的文件比较多,而且还会造成有时候安装插件无法使用;
另一种思路,就是对admin.php增加访问权限,这就是本文要讲的方法,具体操作如下:
修改文件:admin.php
一下几种修改方法按需要选择其中一种即可
A、必须在前台登录了,才能访问后台
在 $discuz->init(); 下方加入代码

if(!$_G['uid']){
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
echo '404 Not Found';
exit;
}

B、必须在前台登录了,且uid=1,才能访问后台
在 $discuz->init(); 下方加入代码

if($_G['uid']!=1){
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
echo '404 Not Found';
exit;
}

C、必须在前台登录了,且uid在指定范围,才能访问后台
在 $discuz->init(); 下方加入代码

$uids=array(1,2,3,99);
if(in_array($_G['uid'],$uids)){
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
echo '404 Not Found';
exit;
}

修改完成后,非法访问后台的用户就直接报404错误了!