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
TokenCSRF 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:
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!