当前位置:首页 > JavaScript

Js 扫描实现

2026-03-15 04:24:51JavaScript

使用 MutationObserver 监听 DOM 变化

MutationObserver 可以监测 DOM 树的变化,适用于动态加载内容的扫描。通过监听节点的添加、属性修改等事件,触发自定义扫描逻辑。

const observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    mutation.addedNodes.forEach((node) => {
      if (node.nodeType === Node.ELEMENT_NODE) {
        scanElement(node); // 自定义扫描函数
      }
    });
  });
});

observer.observe(document.body, {
  childList: true,
  subtree: true,
  attributes: true
});

递归遍历 DOM 树

通过深度优先遍历 DOM 树,检查每个元素的属性、文本内容或子节点是否符合扫描规则。

Js 扫描实现

function scanDOM(root) {
  const nodes = root.querySelectorAll('*');
  nodes.forEach((node) => {
    checkAttributes(node); // 检查属性
    checkTextContent(node); // 检查文本内容
    if (node.shadowRoot) {
      scanDOM(node.shadowRoot); // 处理 Shadow DOM
    }
  });
}

scanDOM(document.body);

正则匹配敏感内容

定义正则表达式规则,匹配文本中的敏感关键词、恶意脚本或异常模式。

Js 扫描实现

function checkTextContent(node) {
  const sensitivePatterns = [/malware/i, /<script.*?>.*?<\/script>/i];
  const text = node.textContent;
  sensitivePatterns.forEach((pattern) => {
    if (pattern.test(text)) {
      console.warn('敏感内容:', node);
    }
  });
}

检查资源加载

通过拦截网络请求或监听资源加载事件,扫描外部脚本、图片等资源的 URL 或内容。

document.addEventListener('DOMContentLoaded', () => {
  const scripts = document.getElementsByTagName('script');
  Array.from(scripts).forEach((script) => {
    if (script.src && !isTrustedDomain(script.src)) {
      console.warn('可疑脚本:', script.src);
    }
  });
});

集成第三方扫描库

使用现成的安全扫描库(如 DOMPurify)对输入或动态内容进行过滤。

import DOMPurify from 'dompurify';
const cleanHTML = DOMPurify.sanitize(userInput);
document.getElementById('output').innerHTML = cleanHTML;

标签: Js
分享给朋友:

相关文章

Js实现冰墩墩

Js实现冰墩墩

使用Canvas绘制冰墩墩 在JavaScript中,可以通过Canvas API绘制冰墩墩形象。以下是实现的基本代码框架: const canvas = document.getElementBy…

Js实现utext

Js实现utext

JavaScript 实现 UText(用户文本处理) 在 JavaScript 中实现 UText(User Text)处理通常涉及文本操作、格式化或自定义功能。以下是几种常见的实现方法: 字符串…

Js实现decimal

Js实现decimal

实现 Decimal 类型的方法 在 JavaScript 中,原生不支持精确的 Decimal 类型,但可以通过以下方法实现高精度小数运算。 使用第三方库 推荐使用成熟的第三方库来处理 Decim…

Js 扫描实现

Js 扫描实现

实现 JavaScript 扫描功能 JavaScript 扫描功能通常涉及文件系统遍历、内容分析或网络请求监控。以下是几种常见场景的实现方法: 文件系统扫描 使用 Node.js 的 fs 模块可…

怎么用Js实现图片移动

怎么用Js实现图片移动

使用CSS和JavaScript实现图片移动 通过修改图片的CSS属性(如left、top或transform)可以实现图片移动效果。以下是两种常见方法: 方法一:通过修改left和top属性 假设…

Js实现reset

Js实现reset

重置表单元素 在JavaScript中重置表单可以通过调用表单元素的reset()方法实现。该方法会将所有表单控件恢复到初始值。 document.getElementById('myForm').…