2025年9月

1、修改默认后台名
打开网站根目录,找到dede这个文件夹【是后台的路径】,修改成任意名称最好是别人猜不到的后台地址名称。
2、删除member文件夹
Member文件夹就是会员系统,织梦本身是自带里会员系统的,大家也可以在后台找到,但是很多用户都是做了企业站,并不需要会员功能,所以并不需要会员系统,这时,大家就可以删除这个文件夹,删除他,不但可以防止攻击,还可减省了空间容量。
3、删除special文件夹
special文件夹是专题的意思,这个文件是专题页面,所以可以放心删掉。
4、plus文件夹
留下这么几个文件,其他全部删除,(建议先备份再删除)
解释:
Img 文件夹:这个是主要是CSS样式在里面,所以保留,如果删除了,会造成发布文章时界面有点乱,所以要保留
ad_js.php:这个文件时广告位,因为有些模板用到了后台调用广告位,如果你不确定,建议保留
Diy.php:这个是留言系统,有些模板上有用户在线留言功能,用到的就是这个,如果你不确定,建议保留
Search.php:这个是搜索功能,也就是网站上的搜索,如果你不确定,建议保留
List.php:这动态栏目,有些用户喜欢动态栏目,有些站长喜好使用的是静态栏目,这个保留也没影响,所以建议保留
View.php:这个是动态文章,道理和list.php一样,建议保留。
count.php:这个是文章浏览次数,建议保留。
5、其他可删除文件:
DEDE 管理目录【后台文件夹】下的这些文件是后台文件管理器,属于多余功能,而且最影响安全
file_manage_control.php
file_manage_main.php
file_manage_view.php
media_add.php
media_edit.php
media_main.php
不需要SQL命令运行器的将dede/sys_sql_query.php 文件删除。
不需要tag功能请将根目录下的tag.php删除。
不需要顶踩的请将根目录下的digg.php与diggindex.php删除。
6、删除根目录下的install 文件夹
7、密码设置:
管理员密码一定要长,而且字母与数字混合,尽量不要用admin,初次安装完成后将admin删除,新建个管理员名字不要太简单。织梦系统数据库存储的密码是MD5的,一般HACK就算通过注入拿到了MD5的密码,如果你的密码够严谨,对方也逆转不过来。也是无奈。但现在的MD5破解网站太过先进,4T的硬盘全是MD5密码,即便你的密码很复杂有时候都能被蒙上。我之前的站点就是这么被黑的。所以一定密码够复杂。

ping 的执行顺序

请求域名解析服务器解析到ip地址列表
发送icmp报文到服务器ip地址列表中的一个ip
服务器响应

在mysql8.0之前的mysqldump命令格式为:
mysqldump --column-statistics=0 --host= --user= --password= database > dump_file_path

mysql8.0版本此命令会报错

Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

此处需要添加新参数--column-statistics=0,格式如下:
mysqldump --column-statistics=0 --host= --port= --user= --password= > dump_file_path

如需设置默认参数,可修改mysql配置文件,添加如下参数:

[mysqldump]
column-statistics=0

当网页有触发XMLHttpRequest请求时,可以进行重写数据,拦截,修改获取数据等操作。

这个只是hook XMLHttpRequest的,fetchApi 的代码在下面

(function hookXMLHttpRequest() {
  // 备份一下原始open和send方法
  const realOpen = XMLHttpRequest.prototype.open;
  const realSend = XMLHttpRequest.prototype.send;

  // 重写open方法
  XMLHttpRequest.prototype.open = function(method, url) {
    console.log('请求地址是:', url);
    console.log('请求方法类型:', method);

    // 调用原始的open方法
    realOpen.apply(this, arguments);
  };

  // 重写send方法
  XMLHttpRequest.prototype.send = function(data) {
    // 发送请求体参数
    console.log('请求体:', data);

    // 调用原始的send方法,并传入所有参数
    realSend.apply(this, arguments);

    // 监听请求状态变化
    this.addEventListener('readystatechange', () => {
      if (this.readyState === 4) { // 请求已完成
        // 请求完成后执行的代码
        console.log('获取返回的全部数据:', this.responseText);
      }
    });
  };
})();

fetch 看这里

(function hookFetch() {
  // 原始的fetch函数
  const realFetch = window.fetch;

  // 重写window.fetch函数
  window.fetch = function(input, init) {
    // 发送的请求体参数
    console.log('发送请求之前执行的代码',init.body);

    // 在控制台记录请求的URL和选项
    console.log('请求地址是:', input);
    console.log('请求选项:', init);

    // 调用原始的fetch函数,并传入所有参数
    return realFetch.apply(this, arguments).then(response => {
      console.log('响应状态码:', response.status);

      // 如果需要,可以对响应进行额外的处理
      // 例如,根据状态码决定是否抛出错误
      if (response.ok) {
        return response.json(); // 打印返回数据,假设数据是json
      } else {
        return response.text().then(text => {
          throw new Error(`请求失败: ${text}`);        });      }    });  };})();

问题:打印出来请求体为什么是null?

答:因为get请求参数是拼接在路径上,所以请求体是null,要获取请求参数,直接在路径上获取就行,只有post时传入请求体才有显示内容。

问题:这个有什么用处?

答:可以监控网络请求数据,也可以修改请求和返回。

例如:某页面请求列表,参数size显示数量是10,固定的,网页上又没有修改显示数量的地方,那么可以试试修改请求,把请求的参数size 重写为9999(如果后端没做显示限制应该可以一波全部出来),然后请求就会改变

还有某些网站会请求判断是不是vip,例如1就是vip,但是返回的数据是0,可以重写返回的vip数据,0改成1就变成vip。

还有其它功能靠自己想