1. Birinchidan, shifrlash uchun ochiq va shaxsiy kalit juftligini yarating. Buni OpenSSL kabi vositalar yordamida amalga oshirish mumkin.
  2. Shaxsiy kalit yordamida parolni shifrlang. Bu API so'rovida yuborilishi mumkin bo'lgan parolning xavfsiz, shifrlangan versiyasini yaratadi.
  3. API so'roviga shifrlangan parol va ochiq kalitni qo'shing. Ochiq kalit serverga parolni ochish va so'rovning haqiqiyligini tekshirish uchun zarur.
  4. HTTPS kabi xavfsiz protokol yordamida API so'rovini serverga yuboring. Bu ma'lumotlarning xavfsiz uzatilishini va zararli shaxslar tomonidan tutib olinmasligini ta'minlaydi.
  5. Keyin server parolni parolini ochish va so'rovni autentifikatsiya qilish uchun ochiq kalitdan foydalanadi. Agar parol to'g'ri bo'lsa, server so'rovni qayta ishlaydi va tegishli javobni qaytaradi.

API so'rovini xavfsiz qilish uchun kodlashning asosiy misoli:

const crypto = require('crypto');

const newUserLogin = async (email: string, password: string, newPassword: string) => {
  const url = NEW_USER_LOGIN_ENDPOINT;

  // Encrypt the password and newPassword using a private key
  const privateKey = fs.readFileSync('private.pem', 'utf8');
  const passwordCipher = crypto.privateEncrypt(privateKey, Buffer.from(password, 'utf8'));
  const newPasswordCipher = crypto.privateEncrypt(privateKey, Buffer.from(newPassword, 'utf8'));

  // Read the public key
  const publicKey = fs.readFileSync('public.pem', 'utf8');

  // Send the API request with the encrypted password and newPassword, and the public key
  return await axios.post(
    url,
    {
      email: email,
      password: passwordCipher,
      newPassword: newPasswordCipher
    },
    {
      headers: {
        "Content-Type": "application/json",
        "public-key": publicKey
      },
      httpsAgent: new https.Agent({  
        rejectUnauthorized: true
      }),
    }
  );
};

Ushbu kod maxfiy kalit yordamida parol va newPasswordni shifrlash uchun kripto kutubxonasidan foydalanadi va keyin shifrlangan ma'lumotlarni API so'roviga yuboradi. Ochiq kalit so'rov sarlavhasiga ham kiritilgan, shuning uchun server undan parol va newPassword shifrini ochish va so'rovning haqiqiyligini tekshirish uchun foydalanishi mumkin. Bundan tashqari, u ma'lumotlarni xavfsiz uzatish uchun HTTPS dan foydalanadi.

Shuni ta'kidlash kerakki, bu shunchaki namuna kodidir va siz shaxsiy kalit va ochiq kalitni xavfsiz va xavfsiz saqlash uchun yanada mustahkam shifrlash usuli va protokolidan foydalanishingiz kerak, shuningdek, server ham xavfsiz va faqat vakolatli shaxslar kirishi mumkinligiga ishonch hosil qiling. xodimlar.

Oldingi javobimda fayl tizimi bilan ishlash imkonini beruvchi o'rnatilgan Node.js moduli bo'lgan fs dan foydalandim. Biroq, bu modul brauzer tomonidagi JavaScript-da mavjud emas, shuning uchun u brauzerga asoslangan ilovada ishlamaydi.

Ushbu kodning ishlashi uchun siz shifrlash bilan ishlashga imkon beruvchi brauzerga mos kutubxonadan foydalanishingiz kerak bo'ladi. Bunday kutubxonalardan biri crypto-js bo'lib, uni npm bilan o'rnatish va keyin kodingizga import qilish mumkin.

crypto-js dan qanday foydalanish uchun kodlash mumkinligiga misol:

import * as CryptoJS from 'crypto-js';

const newUserLogin = async (email: string, password: string, newPassword: string) => {
  const url = NEW_USER_LOGIN_ENDPOINT;

  // Encrypt the password and newPassword using a private key
  const privateKey = 'private_key';
  const passwordCipher = CryptoJS.AES.encrypt(password, privateKey).toString();
  const newPasswordCipher = CryptoJS.AES.encrypt(newPassword, privateKey).toString();

  // Read the public key
  const publicKey = 'public_key';

  // Send the API request with the encrypted password and newPassword, and the public key
  return await axios.post(
    url,
    {
      email: email,
      password: passwordCipher,
      newPassword: newPasswordCipher
    },
    {
      headers: {
        "Content-Type": "application/json",
        "public-key": publicKey
      },
      httpsAgent: new https.Agent({  
        rejectUnauthorized: true
      }),
    }
  );
};

Shuni yodda tutingki, bu hali ham jarayonning soddalashtirilgan versiyasidir va API so'rovlari uchun ishlatilishi mumkin bo'lgan yanada mustahkam shifrlash usullari va protokollari mavjud. Shuningdek, men bu yerga qo'ygan kalit faqat namoyish qilish uchun, uni siz yaratgan haqiqiy kalit bilan almashtirishingiz va uni xavfsiz va xavfsiz saqlashingiz kerak.

Eslatma: Shuni yodda tutish kerakki, bu usul faqat shaxsiy kalit xavfsiz va xavfsiz saqlansa va server ham xavfsiz bo'lsa va faqat vakolatli xodimlar tomonidan foydalanilsa xavfsiz bo'ladi. Shuni ham ta'kidlash kerakki, bu jarayonning soddalashtirilgan versiyasi va API so'rovlari uchun ishlatilishi mumkin bo'lgan yanada mustahkam shifrlash usullari va protokollari mavjud.