Lỗi ký tự khi xuất dữ liệu php

thì phải chắc chắn rằng dòng định nghĩa biến ISO trong file ngôn ngữ language\vietnamese.php phải là

3. Do file templates_css.css trong thư mục templates

- Kiểm tra chỗ khai báo font-family xem có phải là các font UNICODE hay không. VD:

Code:

font-family: Arial, Helvetica, sans-serif;
font-family: "Times New Roman", Times, serif;
font-family: "Courier New", Courier, monospace;
font-family: Verdana, Arial, Helvetica, sans-serif;

4. Do các module/component

- Tìm dòng sau trong các file *.php *.xml

Code:

> Xem thêm các bài viết trong chuỗi bài về ngôn ngữ lập trình PHP:

  • Bài 1: Tìm hiểu về ngôn ngữ lập trình PHP
  • Bài 2: Hướng dẫn sử dụng XAMPP: Tạo môi trường Lập trình PHP trên máy tính của bạn
  • Bài 3: Tìm hiểu về cú pháp cơ bản trong PHP [Phần 1]
  • Bài 4: Tìm hiểu về cú pháp cơ bản trong PHP [Phần 2]
  • Bài 5: Câu lệnh điều kiện trong PHP

2. SQL Injection [SQLi]

Lỗ hổng này thường xuất phát khi mà ứng dụng PHP không kiểm soát được dữ liệu đầu vào từ phía người dùng. Việc này có thể dẫn đến việc người dùng sử dụng lỗi để triển khai tấn công ứng dụng thông qua việc thực thi trái phép các mã SQL không an toàn trên cơ sở dữ liệu.

Ví dụ: Biến $name trong câu query sau không được kiểm tra cũng như xử lý trước khi đưa vào câu sql.

$sql = "SELECT * FROM posts WHERE name = '" . $name . "'";

Ở đây, chúng ta có rất nhiều cách để có thể xử lý đầu vào trước khi thực thi câu SQL như sử dụng Prepared Statements hoặc Parameterized Queries thay vì chỉ nối chuỗi như trên, hoặc chúng ta cũng có thể sử dụng các hàm như mysqli_real_escape_string[] để có thể kiểm soát được dữ liệu từ người dùng nhập vào.

// Sử dụng Prepared Statements
$stmt = $conn->prepare["SELECT * FROM posts WHERE name = ?"];
$stmt->bind_param["s", $name];
$stmt->execute[];

\>>> Xem thêm bài viết tương tự tại đây:

  • Câu lệnh điều kiện và vòng lặp trong PHP
  • Xử lý biểu mẫu trong PHP

3. Cross-Site Scripting [XSS]

Lỗ hổng XSS cũng là một lỗ hổng xảy ra khi mà dữ liệu đầu vào của người dùng không được kiểm soát đúng cách. Gây nên nguy cơ khi mà người dùng hoàn toàn có thể chèn các mã JavaScript độc hại và thực thi nó trên ứng dụng web trên trình duyệt của người sử dụng.

Ví dụ: Dữ liệu được hiển thị lên trang web mà không được xử lý trước

echo "Welcome, " . $user_input;

Ở đây các thông dụng nhất là sử dụng hàm

// Sử dụng Prepared Statements
$stmt = $conn->prepare["SELECT * FROM posts WHERE name = ?"];
$stmt->bind_param["s", $name];
$stmt->execute[];

0 để có thể xử lý các ký tự đặc biệt thành các HTML entities trước khi hiển thị dữ liệu nhập từ người dùng.

echo "Welcome, " . htmlspecialchars[$user_input];

4. Cross-Site Request Forgery [CSRF]

Đây là lỗ hổng mà những hacker có thể lợi dụng để tạo ra những request giả mạo trên máy khách của người dùng mà không cần sự tương tác của họ.

Ví dụ: Dưới đây là một biểu mẫu có thể bị tận dụng bới lỗi CSRF


    
    

Trong trường hợp này, chúng ta có thể ngăn chặn phương pháp tấn công này bằng cách tạo ra một chuỗi token CSRF để xác thực yêu cầu mỗi khi người dùng gửi request lên server để đảm bảo những thao tác đó là do chính người dùng thao tác, chứ không phải là một cuộc tấn công lợi dụng lỗ hổng CSRF.

// Tạo ra token CSRF
$token = bin2hex[random_bytes[32]];
// Lưu trữ lại token được tạo ra, ở đây chúng ta sẽ lưu vào $SESSION
$_SESSION['csrf_token'] = $token;
// Kiểm tra token CSRF trước khi xử lý yêu cầu
if [$_POST['csrf_token'] === $_SESSION['csrf_token']] {
    // Xử lý yêu cầu
}

5. Một số lỗi thường gặp khác

  • Sử dụng các phiên bản quá cũ: Với sự phát triển của nhiều cách tấn công phức tạp hiện nay, việc liên tục cập nhật phần mềm cũng có tác dụng không hề nhỏ trong việc cập nhật các phiên bản vá lỗi, việc này sẽ giúp cho các lỗi từ thư viện sẽ được khắc phục từ đó giúp hệ thống hoạt động tốt và ổn định hơn.
  • Giới hạn quyền truy cập một số tệp tin quan trọng: Trong từng ứng dụng sẽ có những tệp tin không được phép truy cập từ những người dùng thông thường, chúng ta cần tìm hiểu xem hệ thống đang sử dụng có phương pháp nào để giữ an toàn cho những tệp tin này.

Tổng kết

Chúng ta đã cùng nhau tìm hiểu về các lỗ hổng bảo mật có thể gặp phải khi làm việc với các ứng dụng web, cụ thể ở đây là ngôn ngữ lập trình PHP. Những lỗ hổng này hoàn toàn có thể xảy ra ở bất kỳ ứng dụng nào nếu như lập trình viên không có kiến thức hoặc không chủ động phòng ngừa chúng. Công việc ngăn chặn cũng như nâng cao bảo mật này đòi hỏi sự chú ý đặc biệt từ các lập trình viên.

Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…

Chủ Đề