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

WBOY
Lepaskan: 2024-02-25 13:06:02
ke hadapan
641 orang telah melayarinya

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");
}
}

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

?>
Salin selepas log masuk

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>
Salin selepas log masuk
<?php

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

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

?>
Salin selepas log masuk

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";">
Salin selepas log masuk

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">
Salin selepas log masuk

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!

Label berkaitan:
sumber:lsjlt.com
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!