UI: panel horizontal con tabs + OSINT dorking profesional (95 dorks)
- index.html: sustituye grid de bloques por 6 tabs horizontales (Cuentas base / Redes sociales / Mensajería / Streaming / Buscadores / Data brokers) con items como tarjetas en grid responsive - egosurfing.html: dorking expandido de 12 dorks a ~95 organizados en 10 categorías OSINT profesionales (nombre, email, teléfono, alias, data brokers, pastes/brechas, registros oficiales, perfil profesional, geolocalización, archivo histórico) con sistema de tabs dinámico - erase.js: límites de longitud en campos opcionales (nickname 100, phone 30, address 300, extra 500) + type-check explícito en email Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0ca9203522
commit
b5ae0ceb29
4 changed files with 479 additions and 166 deletions
|
|
@ -7,7 +7,9 @@ const ALLOWED_PROVIDERS = new Set(Object.keys(PROVIDER_DATA));
|
|||
|
||||
module.exports = async (req, res) => {
|
||||
try {
|
||||
const { provider, email, nickname, phone, address, extra } = req.body;
|
||||
const { provider, email,
|
||||
nickname: rawNick, phone: rawPhone,
|
||||
address: rawAddr, extra: rawExtra } = req.body;
|
||||
|
||||
// Validación mínima
|
||||
if (!provider || !email) {
|
||||
|
|
@ -20,10 +22,16 @@ module.exports = async (req, res) => {
|
|||
}
|
||||
|
||||
// Validación básica de email
|
||||
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
||||
if (typeof email !== 'string' || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
||||
return res.status(400).json({ error: 'Email inválido' });
|
||||
}
|
||||
|
||||
// Límites de longitud en campos opcionales (defensa en profundidad)
|
||||
const nickname = String(rawNick || '').slice(0, 100).trim();
|
||||
const phone = String(rawPhone || '').slice(0, 30).trim();
|
||||
const address = String(rawAddr || '').slice(0, 300).trim();
|
||||
const extra = String(rawExtra || '').slice(0, 500).trim();
|
||||
|
||||
// Hash irreversible para referencia (auditoría sin almacenar PII)
|
||||
const hash = crypto
|
||||
.createHash('sha256')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue