Rumah >pembangunan bahagian belakang >tutorial php >Jangkakan risiko dan mogok secara awal: Strategi perintis untuk mencegah pemalsuan permintaan merentas tapak PHP (CSRF)

Jangkakan risiko dan mogok secara awal: Strategi perintis untuk mencegah pemalsuan permintaan merentas tapak PHP (CSRF)

WBOY
WBOYke hadapan
2024-02-25 13:04:05659semak imbas

Artikel "Anticipate Risks and Preemptively Strike: Pioneer Strategies for PHP Cross-Site Request Forgery (CSRF) Prevention" yang ditulis oleh editor PHP Xinyi secara mendalam meneroka ancaman serangan CSRF terhadap keselamatan laman web dan mencadangkan satu siri strategi pencegahan untuk membantu pembangun dengan berkesan Lindungi daripada serangan sedemikian. Melalui bahasa yang ringkas dan jelas, artikel itu menyediakan panduan pencegahan keselamatan praktikal kepada pembaca, membolehkan mereka melindungi keselamatan tapak web dan pengguna dengan lebih baik semasa proses pembangunan.

1. Penyerahan borang serangan CSRF

Serangan jenis ini berfungsi dengan memperdaya mangsa untuk mengklik pautan atau butang palsu, menyebabkan penyemak imbas mangsa menghantar permintaan POST ke tapak web penyerang, dengan itu melakukan tindakan yang dimaksudkan oleh penyerang.

2. DAPATKAN permintaan serangan CSRF

GET request Serangan CSRF berfungsi dengan menipu mangsa supaya mengklik pada pautan atau imej palsu, menyebabkan penyemak imbas mangsa menghantar permintaan GET ke tapak web penyerang, dengan itu melakukan tindakan yang dimaksudkan oleh penyerang.

3. JSON meminta serangan CSRF

JSONMinta serangan CSRF berfungsi dengan memperdaya mangsa supaya mengklik pada pautan atau butang palsu, menyebabkan penyemak imbas mangsa menghantar permintaan jsATAS ke tapak web penyerang, dengan itu melakukan tindakan yang dimaksudkan oleh penyerang.

4. AJAX meminta serangan CSRF

ajaxMinta serangan CSRF berfungsi dengan memperdaya mangsa supaya mengklik pada pautan atau butang palsu, menyebabkan penyemak imbas mangsa menghantar permintaan AJAX ke tapak web penyerang, dengan itu melakukan tindakan yang dimaksudkan oleh penyerang.

Merintis strategi untuk mencegah serangan CSRF

1. Gunakan token CSRF

Token

CSRF ialah rentetan rawak yang dijana pada bahagian pelayan dan disimpan dalam kuki di bahagian pelanggan. Apabila menghantar permintaan, pelanggan menghantar token CSRF ke pelayan sebagai sebahagian daripada pengepala permintaan Http. Pelayan menyemak sama ada token CSRF adalah sah dan, jika sah, melaksanakan operasi yang diminta jika tidak sah, menolak permintaan.

Contoh kod:

<?PHP

// 生成CSRF令牌
$csrfToken = bin2hex(random_bytes(32));

// 在Cookie中存储CSRF令牌
setcookie("csrf_token", $csrfToken, time() + 3600, "/");

// 检查CSRF令牌是否有效
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!isset($_POST["csrf_token"]) || $_POST["csrf_token"] !== $_COOKIE["csrf_token"]) {
die("Invalid CSRF token");
}
}

// 执行请求的操作
...

?>

2. Gunakan atribut SameSite

Atribut SameSite menghalang penyemak imbas daripada menghantar kuki dalam permintaan merentas tapak. Ia boleh ditetapkan kepada salah satu daripada tiga nilai berikut:

  • Lax: Penyemak imbas akan menghantar kuki dalam permintaan merentas tapak, tetapi hanya untuk permintaan asal yang sama.
  • Ketat: Penyemak imbas tidak akan menghantar kuki dalam permintaan merentas tapak.
  • Tiada: Penyemak imbas akan menghantar kuki dalam permintaan merentas tapak, tidak kira sama ada permintaan itu berasal dari asal yang sama.

Contoh kod:

<fORM action="submit.php" method="post">
<input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
<input type="submit" value="Submit">
</form>
<?php

// 检查SameSite属性是否有效
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!isset($_POST["csrf_token"]) || $_POST["csrf_token"] !== $_COOKIE["csrf_token"]) {
die("Invalid CSRF token");
}
}

// 执行请求的操作
...

?>

3. Gunakan pengepala Content-Security-Policy (CSP)

Pengepala CSP menghalang penyemak imbas daripada memuatkan sumber daripada tapak web pihak ketiga. Ia boleh ditetapkan untuk membenarkan atau menyekat jenis sumber tertentu, seperti skrip, helaian gaya dan imej.

Contoh kod:

<meta http-equiv="Content-Security-Policy" content="default-src "self"; script-src "self" "https://example.com"; style-src "self" "https://example.com"; img-src "self" "https://example.com";">

4. Gunakan tajuk Perkongsian Sumber Silang (CORS)

Pengepala CORS membolehkan penyemak imbas menghantar permintaan merentas domain ke domain lain. Ia boleh ditetapkan untuk membenarkan atau menolak jenis permintaan tertentu, seperti GET, POST, PUT dan DELETE.

Contoh kod:

<meta http-equiv="Access-Control-Allow-Origin" content="https://example.com">
<meta http-equiv="Access-Control-Allow-Methods" content="GET, POST, PUT, DELETE">

Atas ialah kandungan terperinci Jangkakan risiko dan mogok secara awal: Strategi perintis untuk mencegah pemalsuan permintaan merentas tapak PHP (CSRF). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam