Rumah pembangunan bahagian belakang tutorial php Reka bentuk bahagian belakang PHP: penerokaan keselamatan dan kawalan kebenaran

Reka bentuk bahagian belakang PHP: penerokaan keselamatan dan kawalan kebenaran

Jan 19, 2024 am 10:14 AM
keselamatan Kawalan kebenaran latar belakang php

Reka bentuk bahagian belakang PHP: penerokaan keselamatan dan kawalan kebenaran

Dengan populariti Internet dan aplikasi Web, PHP telah menjadi salah satu bahasa bahagian belakang yang paling popular. Walau bagaimanapun, pembangunan bahagian belakang PHP melibatkan isu keselamatan dan kawalan kebenaran yang sangat penting.

Dalam artikel ini, kami akan meneroka keselamatan dan kawalan kebenaran dalam reka bentuk bahagian belakang PHP dan menyediakan contoh kod khusus untuk membantu pembaca memahami isu ini dengan lebih baik. Isu keselamatan yang menggunakan input pertanyaan SQL untuk memanipulasi atau melihat data. Untuk mengelakkan serangan suntikan SQL, kita perlu melindungi diri kita semasa menulis kod.

Berikut ialah contoh suntikan SQL mudah:

$username = $_POST['username'];

$sql = "SELECT * FROM user WHERE username='$username'";
Salin selepas log masuk

Dalam contoh ini, penyerang boleh memintas input pengguna dengan memasukkan ' atau 1=1 -- dan mendapatkan data keseluruhan jadual pengguna . Untuk mengelakkan perkara ini berlaku, kita perlu menggunakan pernyataan yang disediakan dalam PHP.

    Kod sampel yang diubah suai adalah seperti berikut:
  1. $username = $_POST['username'];
    
    $stmt = $pdo->prepare("SELECT * FROM user WHERE username=?");
    $stmt->execute([$username]);
    
    $user = $stmt->fetch();
    Salin selepas log masuk
  2. Dalam contoh ini, kami menggunakan pernyataan yang disediakan dalam PDO untuk memisahkan kandungan input pengguna daripada pernyataan SQL. Ini boleh mengelakkan serangan suntikan SQL dengan berkesan.

XSS Attack

XSS attack ialah teknik yang mengeksploitasi kelemahan dalam aplikasi web dan membenarkan penyerang menyuntik tag HTML atau kod JavaScript ke dalam penyemak imbas pengguna. Untuk mengelakkan serangan XSS, kita perlu menggunakan fungsi htmlspecialchars() untuk menapis input pengguna. ' or 1=1 -- 的方式来绕过用户输入的内容,并获取到整张用户表的数据。为了防止这种情况发生,我们需要用到PHP中的预处理语句。

修改后的示例代码如下:

echo "Welcome, " . $_GET['username'] . "!";
Salin selepas log masuk

这个示例中,我们使用了PDO中的预处理语句,将用户输入的内容与SQL语句分离开来。这样可以有效地避免SQL注入的攻击。

  1. XSS攻击

XSS攻击是一种利用Web应用程序的漏洞,攻击者可以将HTML标签或JavaScript代码注入到用户浏览器中的技术。为了避免XSS攻击,我们需要使用htmlspecialchars()函数来过滤用户输入的内容。

以下是一个简单的XSS攻击示例:

echo "Welcome, " . htmlspecialchars($_GET['username'], ENT_QUOTES, 'UTF-8') . "!";
Salin selepas log masuk

攻击者可以传递一个JavaScript代码作为username的参数,例如:http://localhost/welcome.php?username=<script>alert("XSS!")</script>

Berikut ialah contoh serangan XSS yang mudah:

<!-- 在攻击者的网站上 -->
<img  src="/static/imghw/default1.png"  data-src="http://localhost/delete.php?id=1"  class="lazy" alt="Reka bentuk bahagian belakang PHP: penerokaan keselamatan dan kawalan kebenaran" >
Salin selepas log masuk

Penyerang boleh menghantar kod JavaScript sebagai parameter nama pengguna, contohnya: http://localhost/welcome.php?username=<script>alert( " XSS!")</script>, supaya kotak amaran boleh muncul dalam penyemak imbas pengguna.

Untuk mengelakkan perkara ini berlaku, kita perlu menggunakan fungsi htmlspecialchars() untuk menapis kandungan yang dimasukkan oleh pengguna. Kod yang diubah suai adalah seperti berikut:
    <!-- 在表单中添加CSRF令牌 -->
    <form action="delete.php" method="POST">
      <input type="hidden" name="token" value="<?php echo md5(session_id()); ?>">
      <input type="hidden" name="id" value="1">
      <button type="submit" class="btn btn-danger">删除</button>
    </form>
    Salin selepas log masuk
  1. Dalam contoh ini, kami menggunakan fungsi htmlspecialchars() untuk menapis kandungan yang dimasukkan oleh pengguna, supaya serangan XSS dapat dielakkan.

CSRF Attack

Serangan CSRF ialah sejenis kerentanan yang mengeksploitasi aplikasi web Penyerang boleh membina halaman atau URL yang membolehkan pengguna melakukan tindakan tertentu tanpa pengetahuan mereka. Untuk mengelakkan serangan CSRF, kita perlu menggunakan token CSRF atau dasar asal yang sama.

Berikut ialah contoh serangan CSRF yang mudah:

if (! check_user_permission('admin')) {
  die("Permission denied!");
}

// 进行敏感操作
Salin selepas log masuk

Penyerang membenarkan pengguna melawat halaman ini dengan menghantar e-mel kepada pengguna atau menerbitkan catatan blog. Halaman ini akan memadamkan rekod dengan id 1 tanpa pengetahuan pengguna.

Untuk mengelakkan perkara ini berlaku, kita perlu menggunakan token CSRF atau polisi asal yang sama. Kod sampel adalah seperti berikut:

// 用户与角色映射关系
$users = [
  'Alice' => ['admin'],
  'Bob' => ['editor'],
  'Charlie' => ['editor', 'viewer'],
];

// 检查当前用户的角色
function get_user_roles($username) {
  global $users;
  return $users[$username] ?? [];
}

// 检查用户是否有权限
function check_user_permission($username, $permission) {
  $roles = get_user_roles($username);
  foreach ($roles as $role) {
    if (isset($permissions[$role]) && $permissions[$role][$permission]) {
      return true;
    }    
  }
  return false;
}

// 定义角色与权限映射关系
$permissions = [
  'admin' => ['create', 'update', 'delete'],
  'editor' => ['create', 'update'],
  'viewer' => ['view'],
];

// 检查用户是否有权限
if (!check_user_permission('Alice', 'delete')) {
  die("Permission denied!");
}

// 进行敏感操作
Salin selepas log masuk
Dalam contoh ini, kami menggunakan token CSRF untuk menghalang penyerang berniat jahat daripada membina halaman atau URL untuk menyerang sistem kami.

2. Isu kawalan kebenaran
  1. Apabila melibatkan isu kawalan kebenaran PHP, ia melibatkan aspek berikut:

Pengesahan

Untuk memastikan keselamatan sistem, identiti pengguna mesti disahkan. Pengesahan diperlukan sebelum memproses operasi sensitif.

Kod sampel adalah seperti berikut:
    rrreee
  1. Dalam contoh ini, kami menggunakan fungsi check_user_permission() untuk menyemak sama ada pengguna mempunyai kebenaran untuk beroperasi. Jika pengguna tidak mempunyai kebenaran, operasi ditamatkan.

Kawalan Peranan

Pengguna yang berbeza dalam sistem mungkin memerlukan kebenaran dan skop operasi yang berbeza. Untuk mencapai kawalan kebenaran jenis ini, kaedah kawalan peranan biasanya digunakan.

Kod sampel adalah seperti berikut:

rrreee

Dalam contoh ini, kami mentakrifkan hubungan pemetaan antara peranan dan kebenaran, dan menggunakan fungsi check_user_permission() untuk menyemak sama ada pengguna mempunyai kebenaran untuk beroperasi. Jika pengguna tidak mempunyai kebenaran, operasi ditamatkan.

Di atas ialah beberapa perbincangan tentang isu keselamatan dan kawalan kebenaran dalam reka bentuk bahagian belakang PHP. Kami mengesyorkan agar pembangun meningkatkan pembelajaran dan pemahaman mereka tentang isu ini semasa proses pembangunan sebenar, dan mematuhi amalan terbaik untuk kawalan keselamatan dan kebenaran semasa menulis kod. 🎜🎜Jika anda mempunyai sebarang pertanyaan lanjut atau memerlukan bantuan lanjut, sila hubungi kami. 🎜

Atas ialah kandungan terperinci Reka bentuk bahagian belakang PHP: penerokaan keselamatan dan kawalan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Prestasi dan keselamatan PHP5 dan PHP8: perbandingan dan penambahbaikan Prestasi dan keselamatan PHP5 dan PHP8: perbandingan dan penambahbaikan Jan 26, 2024 am 10:19 AM

PHP ialah bahasa skrip sebelah pelayan yang digunakan secara meluas yang digunakan untuk membangunkan aplikasi web. Ia telah berkembang menjadi beberapa versi, dan artikel ini akan membincangkan terutamanya perbandingan antara PHP5 dan PHP8, dengan tumpuan khusus pada peningkatan dalam prestasi dan keselamatan. Mula-mula mari kita lihat beberapa ciri PHP5. PHP5 dikeluarkan pada tahun 2004 dan memperkenalkan banyak fungsi dan ciri baharu, seperti pengaturcaraan berorientasikan objek (OOP), pengendalian pengecualian, ruang nama, dsb. Ciri-ciri ini menjadikan PHP5 lebih berkuasa dan fleksibel, membolehkan pembangun

Cara melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Cara melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Oct 20, 2023 am 11:15 AM

Bagaimana untuk melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Dengan pembangunan aplikasi mudah alih, kawalan kebenaran dan pengurusan pengguna telah menjadi bahagian penting dalam pembangunan aplikasi. Dalam uniapp, kami boleh menggunakan beberapa kaedah praktikal untuk melaksanakan kedua-dua fungsi ini dan meningkatkan keselamatan dan pengalaman pengguna aplikasi. Artikel ini akan memperkenalkan cara untuk melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp, dan menyediakan beberapa contoh kod khusus untuk rujukan. 1. Kawalan Kebenaran Kawalan kebenaran merujuk kepada menetapkan kebenaran pengendalian yang berbeza untuk pengguna atau kumpulan pengguna yang berbeza dalam aplikasi untuk melindungi aplikasi.

Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Mar 19, 2024 pm 12:39 PM

Cabaran keselamatan dalam pembangunan Golang: Bagaimana untuk mengelak daripada dieksploitasi untuk penciptaan virus? Dengan aplikasi Golang yang luas dalam bidang pengaturcaraan, semakin ramai pembangun memilih untuk menggunakan Golang untuk membangunkan pelbagai jenis aplikasi. Walau bagaimanapun, seperti bahasa pengaturcaraan lain, terdapat cabaran keselamatan dalam pembangunan Golang. Khususnya, kuasa dan fleksibiliti Golang juga menjadikannya alat penciptaan virus yang berpotensi. Artikel ini akan membincangkan isu keselamatan dalam pembangunan Golang dan menyediakan beberapa kaedah untuk mengelakkan G

Apakah hubungan antara teknik pengurusan memori dan keselamatan dalam fungsi Java? Apakah hubungan antara teknik pengurusan memori dan keselamatan dalam fungsi Java? May 02, 2024 pm 01:06 PM

Pengurusan memori dalam Java melibatkan pengurusan memori automatik, menggunakan pengumpulan sampah dan pengiraan rujukan untuk memperuntukkan, menggunakan dan menuntut semula memori. Pengurusan memori yang berkesan adalah penting untuk keselamatan kerana ia menghalang limpahan penimbal, petunjuk liar dan kebocoran memori, dengan itu meningkatkan keselamatan program anda. Contohnya, dengan melepaskan objek yang tidak lagi diperlukan dengan betul, anda boleh mengelakkan kebocoran memori, dengan itu meningkatkan prestasi program dan mencegah ranap sistem.

Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul Nov 02, 2023 pm 12:32 PM

Amalan terbaik untuk fungsi kebenaran Laravel: Cara mengawal kebenaran pengguna dengan betul memerlukan contoh kod khusus Pengenalan: Laravel ialah rangka kerja PHP yang sangat berkuasa dan popular yang menyediakan banyak fungsi dan alatan untuk membantu kami membangunkan aplikasi web yang cekap dan selamat. Satu ciri penting ialah kawalan kebenaran, yang menyekat akses pengguna ke bahagian aplikasi yang berbeza berdasarkan peranan dan kebenaran mereka. Kawalan kebenaran yang betul ialah komponen utama mana-mana aplikasi web untuk melindungi data dan fungsi sensitif daripada capaian yang tidak dibenarkan

Adakah win11 perlu memasang perisian anti-virus? Adakah win11 perlu memasang perisian anti-virus? Dec 27, 2023 am 09:42 AM

Win11 datang dengan perisian anti-virus Secara umumnya, kesan anti-virus adalah sangat baik dan tidak perlu dipasang Namun, satu-satunya kelemahan ialah virus itu dinyahpasang terlebih dahulu dan bukannya mengingatkan anda terlebih dahulu sama ada anda memerlukannya. Jika anda menerimanya, anda tidak perlu memuat turun perisian anti-virus lain. Adakah win11 perlu memasang perisian anti-virus Jawapan: Tidak. Secara umumnya, win11 disertakan dengan perisian anti-virus dan tidak memerlukan pemasangan tambahan. Jika anda tidak menyukai cara perisian anti-virus yang disertakan dengan sistem win11 dikendalikan, anda boleh memasangnya semula. Bagaimana untuk mematikan perisian anti-virus yang disertakan dengan win11: 1. Pertama, kita masukkan tetapan dan klik "Privasi dan Keselamatan". 2. Kemudian klik "Pusat Keselamatan Tetingkap". 3. Kemudian pilih "Perlindungan virus dan ancaman". 4. Akhir sekali, anda boleh mematikannya

Cara menggunakan pengawal navigasi laluan untuk melaksanakan kawalan kebenaran dan pemintasan laluan dalam uniapp Cara menggunakan pengawal navigasi laluan untuk melaksanakan kawalan kebenaran dan pemintasan laluan dalam uniapp Oct 20, 2023 pm 02:02 PM

Cara menggunakan pengawal navigasi laluan untuk melaksanakan kawalan kebenaran dan pemintasan laluan dalam uniapp Apabila membangunkan projek uniapp, kami sering menghadapi keperluan untuk mengawal dan memintas laluan tertentu. Untuk mencapai matlamat ini, kami boleh menggunakan fungsi pengawal navigasi laluan yang disediakan oleh uniapp. Artikel ini akan memperkenalkan cara menggunakan pengawal navigasi laluan untuk melaksanakan kawalan kebenaran dan pemintasan laluan dalam uniapp, dan memberikan contoh kod yang sepadan. Konfigurasikan pengawal navigasi laluan Mula-mula, konfigurasikan laluan dalam fail main.js projek uniapp.

Analisis keselamatan kata laluan akaun lalai Oracle Analisis keselamatan kata laluan akaun lalai Oracle Mar 09, 2024 pm 04:24 PM

Pangkalan data Oracle ialah sistem pengurusan pangkalan data hubungan yang popular Banyak perusahaan dan organisasi memilih untuk menggunakan Oracle untuk menyimpan dan mengurus data penting mereka. Dalam pangkalan data Oracle, terdapat beberapa akaun lalai dan kata laluan yang dipratetap oleh sistem, seperti sys, sistem, dsb. Dalam pengurusan pangkalan data harian dan kerja operasi dan penyelenggaraan, pentadbir perlu memberi perhatian kepada keselamatan kata laluan akaun lalai ini, kerana akaun ini mempunyai kebenaran yang lebih tinggi dan boleh menyebabkan masalah keselamatan yang serius setelah ia dieksploitasi dengan niat jahat. Artikel ini akan membincangkan lalai Oracle

See all articles