Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ngăn chặn tập lệnh phía máy chủ, XSS

Không bao giờ xuất bất kỳ bit dữ liệu nào vào luồng HTML chưa được chuyển qua htmlspecialchars() và bạn đã hoàn thành. Quy tắc đơn giản, dễ làm theo, loại bỏ hoàn toàn mọi rủi ro XSS.

Là một lập trình viên, đó là của bạn công việc để làm điều đó, mặc dù.

Bạn có thể xác định

function h(s) { return htmlspecialchars(s); }

if htmlspecialchars() quá dài để ghi 100 lần cho mỗi tệp PHP. Mặt khác, sử dụng htmlentities() hoàn toàn không cần thiết.

Điểm mấu chốt là:Có mã, và có dữ liệu. Nếu bạn trộn lẫn cả hai, điều tồi tệ sẽ xảy ra.

Trong trường hợp của HTML, mã là các phần tử, tên thuộc tính, thực thể, chú thích. Dữ liệu là mọi thứ khác. Dữ liệu phải được thoát để tránh bị nhầm với mã.

Trong trường hợp URL, mã là lược đồ, tên máy chủ, đường dẫn, cơ chế của chuỗi truy vấn (? , & , = , # ). Dữ liệu là mọi thứ trong chuỗi truy vấn:tên và giá trị tham số. Họ phải được thoát để tránh bị nhầm với mã.

URL được nhúng trong HTML phải được thoát kép (bằng cách thoát URL HTML-Escape) để đảm bảo tách mã và dữ liệu thích hợp.

Các trình duyệt hiện đại có khả năng phân tích cú pháp đáng kinh ngạc đánh dấu bị hỏng và không chính xác thành một thứ hữu ích. Tuy nhiên, khả năng này không nên được nhấn mạnh. Thực tế là có điều gì đó xảy ra hoạt động (như URL trong <a href> mà không áp dụng tính năng thoát HTML thích hợp) không có nghĩa là bạn làm điều đó là tốt hoặc đúng. XSS là một vấn đề bắt nguồn từ a) những người không biết về việc phân tách dữ liệu / mã (tức là "thoát") hoặc những người cẩu thả và b) những người cố gắng thông minh về phần dữ liệu mà họ không cần phải thoát.

XSS đủ dễ dàng để tránh nếu bạn đảm bảo rằng bạn không rơi vào các loại a) và b).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có cần sử dụng mysql_close (kết nối) không?

  2. Đổi tên thủ tục mysql

  3. Làm thế nào để chèn hình ảnh từ cơ sở dữ liệu?

  4. Làm thế nào để tham gia hai bảng mysql?

  5. Chỉ mục đầy đủ là gì và khi nào tôi nên sử dụng nó?