Cara membangunkan amalan terbaik untuk mempertahankan diri daripada serangan man-in-the-middle menggunakan PHP dan Vue.js

王林
Lepaskan: 2023-07-05 17:02:02
asal
1018 orang telah melayarinya

Cara menggunakan PHP dan Vue.js untuk membangunkan amalan terbaik untuk mempertahankan diri daripada serangan man-in-the-middle

Serangan man-in-the-middle ialah ancaman keselamatan rangkaian biasa Penyerang boleh memasukkan kod hasad mereka sendiri di antara dua berkomunikasi nod untuk mencuri atau mengusik data sensitif. Untuk aplikasi web yang dibangunkan menggunakan PHP dan Vue.js, mempertahankan diri daripada serangan man-in-the-middle adalah tugas penting. Artikel ini akan menerangkan cara menggunakan PHP dan Vue.js digabungkan dengan beberapa amalan terbaik untuk melindungi aplikasi anda daripada risiko serangan man-in-the-middle.

  1. Gunakan HTTPS untuk menyulitkan komunikasi

Menggunakan HTTPS untuk melindungi penghantaran data ialah langkah utama untuk mencegah serangan orang-dalam-tengah. HTTPS menggunakan protokol SSL/TLS untuk menyulitkan komunikasi bagi memastikan data tidak boleh dicuri atau diusik semasa penghantaran.

Dalam PHP, anda boleh mendayakan HTTPS dengan mengkonfigurasi sijil SSL pelayan. Dalam Vue.js, anda boleh menggunakan perpustakaan seperti axios untuk menghantar permintaan HTTPS.

Berikut ialah contoh pelaksanaan komunikasi HTTPS menggunakan PHP dan Vue.js:

Kod PHP:

// 设置HTTP严格传输安全
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");

// 重定向所有HTTP请求到HTTPS
if ($_SERVER['HTTPS'] != 'on') {
    $redirectUrl = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header("Location: $redirectUrl", true, 301);
    exit();
}
Salin selepas log masuk

Kod Vue.js:

import axios from 'axios';

const instance = axios.create({
    baseURL: 'https://your-domain.com',
});

// 请求拦截器,在请求发送之前添加https
instance.interceptors.request.use(
    (config) => {
        config.url = `https://${config.url}`;
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);
Salin selepas log masuk

Dengan kod di atas, aplikasi anda akan berkomunikasi dengan pelayan melalui HTTPS, oleh itu The keselamatan penghantaran data adalah terjamin.

  1. Gunakan pengesahan dua hala

Pengesahan dua hala ialah kaedah untuk mewujudkan sambungan yang disulitkan antara pelayan dan pelanggan dan mengesahkan identiti pihak yang satu lagi. Ia melakukan ini dengan menjana dan berkongsi sepasang kunci pada kedua-dua bahagian pelayan dan klien.

Dalam PHP, anda boleh menggunakan sambungan openssl dan fungsi openssl_pkey_new untuk menjana kunci peribadi dan awam. Dalam Vue.js, anda boleh menggunakan perpustakaan seperti crypto-js untuk menjana pasangan kunci.

Berikut ialah contoh penggunaan PHP dan Vue.js untuk melaksanakan pengesahan dua hala:

Kod PHP:

$privateKey = openssl_pkey_new(array(
    'private_key_bits' => 2048,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($privateKey, $privateKeyPem);
$publicKey = openssl_pkey_get_details($privateKey)['key'];

// 将公钥发送给客户端
echo $publicKey;
Salin selepas log masuk

Kod Vue.js:

import CryptoJS from 'crypto-js';

// 在 Vue.js 的生命周期方法中生成公钥和私钥
created: function() {
    const privateKey = CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Base64);
    const publicKey = CryptoJS.RSA.generateKeyPair(privateKey, 1024).publicKey;
    
    // 将公钥发送给服务器
    axios.post('/public-key', { publicKey: publicKey });
},
Salin selepas log masuk

Dalam contoh di atas, pelayan menjana sepasang awam dan kunci persendirian, dan Kunci awam dihantar kepada klien. Pelanggan menggunakan kunci awam untuk menyulitkan data sensitif dan pelayan menggunakan kunci peribadi untuk menyahsulitnya.

  1. Sahkan sijil pelayan

Untuk mengelakkan serangan man-in-the-middle, anda harus membandingkan sijil pelayan dengan sijil yang diharapkan untuk memastikan keselamatan sambungan.

Dalam PHP, anda boleh menggunakan sambungan openssl dan fungsi openssl_x509_parse untuk menghuraikan sijil pelayan. Dalam Vue.js, anda boleh mengesahkan sijil pelayan melalui konfigurasi validateStatus axios.

Berikut ialah contoh penggunaan PHP dan Vue.js untuk mengesahkan sijil pelayan:

Kod PHP:

$expectedCert = file_get_contents('path/to/expected-certificate.crt');
$serverCert = $_SERVER['SSL_CLIENT_CERT'];
$certDetails = openssl_x509_parse($serverCert);

if ($expectedCert !== $serverCert || $certDetails['subject']['CN'] !== 'your-domain.com') {
    // 证书验证失败,终止连接
    die('Unauthorized');
}
Salin selepas log masuk

Kod Vue.js:

const instance = axios.create({
    baseURL: 'https://your-domain.com',
    httpsAgent: new https.Agent({
        rejectUnauthorized: true,
        ca: fs.readFileSync('path/to/expected-certificate.crt'),
    }),
});
Salin selepas log masuk

Dalam kod di atas, pelayan akan mengesahkan integriti sijil dan sama ada subjek adalah seperti yang diharapkan konsisten. Jika pengesahan gagal, sambungan akan ditamatkan.

Dengan amalan terbaik ini, anda boleh mengukuhkan keselamatan aplikasi PHP dan Vue.js anda serta mengurangkan risiko serangan man-in-the-middle. Ingat, keselamatan harus menjadi keutamaan anda semasa pembangunan Hanya dengan melindungi data pengguna dan privasi pengguna akan mempercayai dan menggunakan aplikasi anda.

Atas ialah kandungan terperinci Cara membangunkan amalan terbaik untuk mempertahankan diri daripada serangan man-in-the-middle menggunakan PHP dan Vue.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan