Bảo mật Dữ liệu Kiểm thử trong Nightwatch.js: Mã hóa và Quản lý Thông tin Nhạy cảm

Tầm quan trọng của bảo mật dữ liệu kiểm thử

Quá trình kiểm thử ứng dụng web thường yêu cầu sử dụng dữ liệu nhạy cảm như mật khẩu cơ sở dữ liệu, token dịch vụ. Lưu trữ thông tin này dưới dạng văn bản thuần có thể dẫn đến:

  • Rò rỉ thông tin qua kho lưu trữ mã nguồn
  • Truy cập trái phép vào môi trường kiểm thử
  • Vi phạm quy định bảo mật (GDPR, HIPAA)

Quản lý biến môi trường

Sử dụng biến môi trường để lưu trữ thông tin nhạy cảm thay vì mã hóa cứng:

module.exports = {
  'Kiểm tra đăng nhập an toàn': function(client) {
    client
      .url('https://example.com/login')
      .setValue('input[name=email]', process.env.TEST_EMAIL)
      .setValue('input[name=pass]', process.env.TEST_PASS)
      .click('button[type=submit]');
  }
};

Công cụ quản lý .env

  1. Cài đặt gói: npm install dotenv --save-dev
  2. Tạo file .env (thêm vào .gitignore):
    TEST_EMAIL=user@example.com
    DB_PASS=securePassword123
    API_SECRET=xyz789abc
  3. Thêm vào file cấu hình Nightwatch:
    require('dotenv').config();

Bảo mật file cấu hình

Phân tách cấu hình theo môi trường:

module.exports = {
  envs: {
    staging: {
      dbUser: process.env.STAGING_DB_USER,
      dbPass: process.env.STAGING_DB_PASS
    },
    production: {
      dbUser: process.env.PROD_DB_USER,
      dbPass: process.env.PROD_DB_PASS
    }
  }
};

Mã hóa nâng cao

Sử dụng module crypto để mã hóa dữ liệu:

const crypto = require('crypto');
const algorithm = 'aes-256-ctr';
const key = crypto.scryptSync(process.env.ENC_KEY, 'salt', 32);

exports.mahoa = (text) => {
  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv(algorithm, key, iv);
  return Buffer.concat([iv, cipher.update(text), cipher.final()]).toString('hex');
};

exports.giaima = (encrypted) => {
  const buffer = Buffer.from(encrypted, 'hex');
  const iv = buffer.subarray(0, 16);
  const decipher = crypto.createDecipheriv(algorithm, key, iv);
  return Buffer.concat([decipher.update(buffer.subarray(16)), decipher.final()]).toString();
};

Quy trình bảo mật khuyến nghị

  • Không lưu trữ thông tin nhạy cảm trong kho mã nguồn
    • Thêm file .env vào .gitignore
    • Sử dụng .env.example làm template
  • Sử dụng dịch vụ quản lý khóa
    • AWS KMS hoặc HashiCorp Vault cho môi trường production
  • Luân chuyển thông tin xác thực định kỳ
  • Kiểm tra mã kiểm thử tự động
    • Sử dụng công cụ quét mã nguồn
    • Thêm bước kiểm tra bảo mật trong quy trình PR
  • Áp dụng nguyên tắc đặc quyền tối thiểu
    • Giới hạn quyền cho tài khoản kiểm thử
    • Cô lập môi trường kiểm thử

Thẻ: Nightwatch.js dotenv Node.js WebdriverAPI Crypto

Đăng vào ngày 10 tháng 7 lúc 21:20