当前位置:首页 > 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实现划词翻译

实现划词翻译的基本思路 划词翻译的核心是监听用户鼠标选中文本的事件,获取选中内容后调用翻译API,最后以弹窗等形式展示翻译结果。以下是具体实现方法: 监听文本选中事件 通过mouseup事件监听用户…

Js实现冰墩墩

Js实现冰墩墩

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

Js实现reset

Js实现reset

使用 HTMLFormElement.reset() 方法 通过 JavaScript 直接调用表单的 reset() 方法可以重置表单内的所有输入字段为初始值: document.getEleme…

Js实现decimal

Js实现decimal

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

Js实现wordclock

Js实现wordclock

实现 Word Clock 的基本思路 Word Clock 是一种以文字显示时间的时钟,例如 "IT IS HALF PAST TEN"。实现这种时钟需要将时间转换为对应的单词组合。 时间转换为单…

Js 扫描实现

Js 扫描实现

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