@coffeeandfun/ remove-pii (英语)
通过从文本中删除个人可识别信息(PII)来保护隐私!
一个Node.js库可以自动从任何字符串中检测并去除敏感信息——电子邮件,电话号码,SSN,信用卡,地址等等. 原为 帮助鸟 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}现在在任何地方使用隐私.
由QQ 创建 罗伯特·詹姆斯·加布里埃尔 时间 咖啡和娱乐有限责任公司。 。 。 .
为什么用这个?
保护隐私
- 自动删除敏感信息
- 防止日志、分析和LLM中意外数据泄露
- * 帮助处理GDPR、HIPAA和一般隐私问题
- 每个使用案例可完全定制
对于开发者
- QQ 简单集成——一个导入,一个函数调用
- 零运行时间依赖关系
- 纯无害环境管理与类型脚本声明
- * 在需要时详细分析和报告
* 安装
npm install @coffeeandfun/remove-pii
要求数 节点.js 16或更新。该包件是纯无害环境管理的,并带有类型为外框的船舶.
快速启动
import { removePII } from '@coffeeandfun/remove-pii';
const text = "John's email is [email protected] and his phone is 123-456-7890.";
const cleaned = removePII(text);
console.log(cleaned);
// "John's email is [email removed] and his phone is [phone removed]."
就是这样。 三行经.
从框中检测到的 PII 类型
| 类型 | 示例 | |
|---|---|---|
| 📧 | 电子邮件地址 | [email protected] |
| 📞 | 电话号码 | 123-456-7890, (中文(简体) ), (555) 123-4567 |
| 🆔 | 社会保障 | 123-45-6789 |
| 💳 | 信用卡 | 1234 5678 9012 3456 |
| 🏠 | 街道地址 | 123 Main Street |
| 📋 | 护照号码 | AB1234567 |
| 🚗 | 驾驶执照 | D123456789 |
| 🌐 | IP 地址 | 192.168.1.1 |
| 📮 | ZIP 代码 | 12345-6789 |
| 🏦 | 银行账户 | 1234567890123456 |
| 🔗 | URL( URL) | https://example.com |
| 📅 | 出生日期 | 01/15/1990 |
检测到 QQ URL 但 没有 默认删除——通过
{ url: { remove: true } }如果你想让他们也消失.
你拿回来的
每个函数都有一个 text 字符串和可选 options 对象。 返回值的形状取决于您调用的函数 :
// Simple replacement
removePII(text) // → string
// Cleaned text + metadata
removePIIDetailed(text) // → { cleanedText, removedItems, originalLength, cleanedLength, reductionPercentage }
// Locate without changing
detectPII(text) // → { text, detectedItems, hasPII, totalMatches, types }
// Full analysis + risk scoring
analyzePII(text) // → { original, cleaned, pii, risk }
// Compliance check
validatePIICompliance(text) // → { isCompliant, violations, violationCount, riskLevel, riskScore, recommendations }
// Array of strings
processBatch(texts) // → BatchResult[]
是这样的 removePIIDetailed 结果实际上看起来像:
{
cleanedText: 'Email: [email removed]',
removedItems: [
{
type: 'email',
count: 1,
items: ['[email protected]'],
description: 'Email addresses'
}
],
originalLength: 23,
cleanedLength: 20,
reductionPercentage: 13
}
API 参考
removePII(text, options?)
主函数——返回被清理的字符串.
const cleaned = removePII("Email: [email protected], Phone: 123-456-7890");
// "Email: [email removed], Phone: [phone removed]"
removePIIDetailed(text, options?)
喜欢 removePII 也告诉你 什麽 被删除.
const result = removePIIDetailed("Email: [email protected]");
// {
// cleanedText: "Email: [email removed]",
// removedItems: [{ type: 'email', count: 1, items: ['[email protected]'] }],
// originalLength: 23,
// cleanedLength: 20,
// reductionPercentage: 13
// }
detectPII(text, options?)
寻找 PII 无 更改文本。 每个检测到的物品包括: positions (单位:千美元)start 编号 : end 编号 : value) 这样您可以在 UI 中突出显示匹配 .
const analysis = detectPII("Email: [email protected], Phone: 123-456-7890");
// {
// text: "Email: [email protected], Phone: 123-456-7890",
// hasPII: true,
// totalMatches: 2,
// types: ['email', 'phone'],
// detectedItems: [...]
// }
analyzePII(text, options?)
全局——检测+去除+风险分数全部一次. 对仪表板来说很好.
const analysis = analyzePII("Email: [email protected], SSN: 123-45-6789");
// {
// original: { text: "...", length: 45, wordCount: 6 },
// cleaned: { text: "...", length: 35, wordCount: 6 },
// pii: { detected: [...], totalCount: 2, types: ['email', 'ssn'] },
// risk: { level: 'medium', score: 13 }
// }
validatePIICompliance(text, options?)
是/没有检查是否遵守人可读的建议.
const compliance = validatePIICompliance("Email: [email protected]");
// {
// isCompliant: false,
// violations: [{ type: 'email', count: 1 }],
// riskLevel: 'low',
// recommendations: ['📧 Email detected - Consider using hashed or masked emails']
// }
processBatch(texts, options?)
运行 removePIIDetailed 在一个阵列上。 一个错误输入不会中止批次——错误会作为 { success: false, error }。 。 。 .
getAvailableTypes()
列出每个内置的 PII 类型及其描述和默认替换.
createCustomPattern(type, pattern, replacement, description)
用于构建自定义模式选项条目的助手(参见 自定义图案 页:1.
🎨自定义
基本配置
通过一个 options 对象,用于启用/失效类型并自定义替换。 凡你没有提到的,都保持它的默认.
const options = {
email: { remove: true, replacement: "[EMAIL HIDDEN]" },
phone: { remove: false },
ssn: { remove: true, replacement: "[SSN REDACTED]" }
};
const cleaned = removePII(text, options);
隐私水平
高隐私——全锁上
const highPrivacy = {
email: { remove: true },
phone: { remove: true },
ssn: { remove: true },
creditCard: { remove: true },
address: { remove: true },
passport: { remove: true },
driversLicense: { remove: true },
ipAddress: { remove: true },
zipCode: { remove: true },
bankAccount: { remove: true },
url: { remove: true },
dateOfBirth: { remove: true }
};
* 适度隐私——仅限财务
const moderatePrivacy = {
ssn: { remove: true },
creditCard: { remove: true },
bankAccount: { remove: true },
address: { remove: true },
email: { remove: false },
phone: { remove: false }
};
自定义替换
const customReplacements = {
email: { replacement: "📧 [CONTACT INFO]" },
phone: { replacement: "📞 [PHONE NUMBER]" },
address: { replacement: "🏠 [LOCATION]" }
};
QQ 自定义模式
需要编辑图书馆不知道的东西吗? 掉入自己的目录 :
import { removePII, createCustomPattern } from '@coffeeandfun/remove-pii';
const options = createCustomPattern(
'employeeId',
/\bEMP-\d{6}\b/g,
'[employee id removed]',
'Internal employee IDs'
);
removePII('Ticket raised by EMP-123456', options);
// 'Ticket raised by [employee id removed]'
高级特性
批量处理
import { processBatch } from '@coffeeandfun/remove-pii';
const texts = [
"Email: [email protected]",
"Phone: 123-456-7890",
"Regular text"
];
const results = processBatch(texts);
// [{ index: 0, success: true, cleanedText: ..., removedItems: [...] }, ...]
风险评估
const compliance = validatePIICompliance(text);
console.log(`Risk Level: ${compliance.riskLevel}`); // 'low' | 'medium' | 'high' | 'critical'
console.log(`Risk Score: ${compliance.riskScore}`); // weighted numeric score
console.log(`Recommendations:`, compliance.recommendations);
📖 检查可用类型
import { getAvailableTypes } from '@coffeeandfun/remove-pii';
getAvailableTypes().forEach(t => {
console.log(`${t.type}: ${t.description}`);
});
现实世界实例
逻辑消毒
import { removePIIDetailed } from '@coffeeandfun/remove-pii';
export function sanitize(entry) {
const { cleanedText, removedItems } = removePIIDetailed(entry);
if (removedItems.length > 0) {
console.debug(`🔒 Sanitized ${removedItems.length} PII item(s)`);
}
return cleanedText;
}
QQ 快速中间软件
import express from 'express';
import { removePII } from '@coffeeandfun/remove-pii';
const app = express();
app.use(express.json());
app.post('/logs', (req, res) => {
console.log(removePII(req.body.message));
res.sendStatus(204);
});
API 反应清洗
import { analyzePII } from '@coffeeandfun/remove-pii';
export function scrubResponse(body) {
const result = analyzePII(JSON.stringify(body));
return result.pii.totalCount > 0
? JSON.parse(result.cleaned.text)
: body;
}
数据清理管道
import { removePII, validatePIICompliance } from '@coffeeandfun/remove-pii';
function cleanUserData(input) {
const compliance = validatePIICompliance(input);
if (!compliance.isCompliant) {
console.warn(`⚠️ PII detected: ${compliance.violationCount} violations`);
return removePII(input);
}
return input;
}
测试
npm test
套房覆盖:
- * 每一个内置PII类型和模式
- * 边缘案件和错误处理
- * 业绩和一致性
- 批量处理
- QQ 自定义配置
捐款
我们欢迎捐款!
- 🐛 报告问题 - 找到一个错误或缺失的 PII 类型?
- 💡 建议的特性 - 如何更好地保护隐私?
- 🔧 提交 PR - 代码改进欢迎!
设置
git clone https://github.com/coffee-and-fun/remove-pii
cd remove-pii
npm install
npm test
许可证
麻省理工学院 ——在你的项目中随意使用这个.
• 信贷
由 QQ 创建 :
- 罗伯特·詹姆斯·加布里埃尔 ——主要开发者
最初为:
- 帮助鸟 ——无障碍扩展,使网络更加包容所有人
++ 辅助
申请时需要保护隐私吗?
专注隐私