Mã php xss

PHP cung cấp các hàm có sẵn _______________ và _______________ để mã hóa các ký tự có vấn đề trong đầu ra và để ngăn chặn các lỗ hổng XSS

Sự khác biệt là trong khi htmlspecialchars[] chỉ mã hóa một tập hợp nhỏ các ký tự [&, , ________7____ nếu đặt ENT_QUOTES" nếu không đặt htmlentities[]0] thì htmlentities[] mã hóa bất kỳ ký tự nào có thực thể HTML tương đương

Điều này làm cho việc sử dụng hàm htmlentities[] sau đây với ENT_QUOTES trở thành cách dễ dàng nhất để mã hóa bất kỳ ký tự có vấn đề nào trong một biến do người dùng kiểm soát để ngăn chặn các cuộc tấn công XSS trong các ngữ cảnh phổ biến nhất

$escaped = htmlentities[$user_controlled_variable, ENT_QUOTES | ENT_HTML5, 'UTF-8'];

Có thể đạt được nhiều kiểm soát chi tiết hơn bằng cách sử dụng các thư viện cung cấp khả năng khử trùng HTML, chẳng hạn như HTML Purifier. Tùy thuộc vào khung bạn đang sử dụng, hãy đảm bảo tuân thủ các kỹ thuật thoát html được đề xuất áp dụng cho khung cụ thể

giao hưởng

Twig là công cụ mẫu được Symfony sử dụng để tự động mã hóa tất cả đầu ra có nguồn gốc từ các biến cho ngữ cảnh HTML. Mã hóa HTML được sử dụng bất cứ khi nào bạn kết xuất một biến trên trang Twig e. g. htmlentities[]4 nhưng lọc để mã hóa cho các ngữ cảnh khác có thể được sử dụng. Mã hóa HTML mặc định cũng mã hóa dấu ngoặc đơn và dấu ngoặc kép, giúp sử dụng an toàn trong hầu hết các ngữ cảnh

Ngữ cảnhVí dụ ngữ cảnhCơ chế mã hóa cành láHTML Bodyhtmlentities[]5Mã hóa HTML [mặc định]Thuộc tính HTMLhtmlentities[]6Mã hóa thuộc tính HTMLTham số URLhtmlentities[]7Mã hóa URL nên được sử dụng để thoát thành phần con URICSShtmlentities[]8Mã hóa CSS thoát mọi thứ ngoại trừ chữ và sốJavaScripthtmlentities[]6
htmlentities[]6Mã hóa JavaScript

Bộ lọc Twig htmlspecialchars[]1 vô hiệu hóa bất kỳ mã hóa nào và không được sử dụng khi hiển thị dữ liệu do người dùng kiểm soát

Người giới thiệu

PHP - htmlentities - Chuyển đổi tất cả các ký tự có thể áp dụng thành các thực thể HTML Symfony - Twig escape filter OWASP - Code Review Guide OWASP - Cross-Site Scripting Prevention Cheat Sheet HTML Purifier

Cross-Site Scripting là một loại lỗ hổng bảo mật thường xảy ra trong các ứng dụng web và thường được viết tắt là XSS. Trong trường hợp bạn đang thắc mắc, chúng tôi không sử dụng CSS viết tắt vì chúng tôi đã sử dụng nó cho Cascading Style Sheets khi chúng tôi thiết kế các trang web của mình

XSS ban đầu được gọi là cross-site vì lỗi bảo mật của trình duyệt web. Sử dụng XSS, bạn có thể chuyển thông tin/dữ liệu từ trang web này sang trang web khác nếu bạn đã mở cửa sổ của cả hai trang web trong trình duyệt của mình.  

Trong bài viết này, tôi sẽ hướng dẫn bạn các chi tiết về XSS và cách bạn có thể ngăn chặn các cuộc tấn công PHP XSS trên ứng dụng web của mình

XSS thường được chèn qua trang web bằng biểu mẫu web hoặc siêu liên kết. Mã này có thể được sử dụng thông qua bất kỳ ngôn ngữ phía máy khách nào như JavaScript, PHP, HTML, VBScript.  

Ngày nay, do sự tràn lan của các lỗ hổng XSS trong quá khứ, các trình duyệt tính đến tính bảo mật và thường không cho phép thông tin chuyển từ màn hình trình duyệt này sang màn hình trình duyệt khác. Điều quan trọng nữa là phải có nhận thức và kiến ​​thức đầy đủ về các ví dụ tấn công XSS trong các ứng dụng PHP của bạn để có thể thiết lập các biện pháp phòng ngừa kịp thời.  

Các loại lỗ hổng XSS

Có 3 kiểu tấn công XSS chính

  1. XSS được lưu trữ
  2. XSS phản ánh
  3. XSS dựa trên Dom [Mô hình đối tượng tài liệu]

Giữ an toàn cho ứng dụng của bạn trên đám mây

Cloudways cung cấp 2FA, SSL miễn phí và các tính năng bảo mật nâng cao khác trên các máy chủ được quản lý để giữ an toàn cho ứng dụng của bạn

XSS được lưu trữ

Stored Cross-Site Scripting [XSS] là một dạng Cross-Site Scripting rất nguy hiểm. Các ứng dụng web cho phép người dùng lưu trữ dữ liệu trong cơ sở dữ liệu có khả năng bị tấn công kiểu này

XSS được lưu trữ xảy ra khi kẻ tấn công XSS đưa mã độc vào trang web với mã được lưu vào cơ sở dữ liệu. Sau này, khi người dùng web truy cập trang, anh ta có thể vô tình truy xuất tệp đó và do đó, tập lệnh sẽ chạy trong trình duyệt của người dùng

Bất cứ khi nào máy khách gửi yêu cầu HTTP đến máy chủ và máy chủ gửi HTTP để phản hồi bằng mã độc vì mã độc lưu trong cơ sở dữ liệu, nó sẽ gây hại cho máy khách. Mức độ nghiêm trọng của loại tấn công này là rất cao

XSS phản ánh

Đây là một loại Cross-Site Scripting trong đó kẻ tấn công chèn một số mã JavaScript bằng cách sử dụng bất kỳ trường biểu mẫu nào trên trang web. Bất kỳ tập lệnh nào sẽ thêm vào trình duyệt sẽ không bao giờ ảnh hưởng đến bất kỳ người dùng nào khác hoặc bất kỳ người dùng nào khác sẽ bị tổn hại

Lấy ví dụ về bất kỳ công cụ tìm kiếm nào [Google, Bing]. Bạn có thể nhập truy vấn và tìm kiếm bất kỳ thông tin nào, nhưng điều gì sẽ xảy ra nếu bạn có thể thêm tập lệnh vào trường nhập và tập lệnh sẽ thực hiện bất kỳ chức năng nào? . Nếu bạn có cookie tương tự như đối với bất kỳ người dùng nào khác, bạn có thể truy cập tất cả dữ liệu của họ trong trình duyệt của mình vì bạn đã tìm kiếm trong hộp tìm kiếm độc hại

XSS dựa trên DOM

DOM là viết tắt của Mô hình đối tượng tài liệu. Trong kiểu tấn công này, kẻ tấn công đưa mã JavaScript vào HTML DOM thông qua bất kỳ trường nhập liệu nào.  

DOM XSS không khác nhiều so với XSS được lưu trữ và phản ánh, trong đó các tập lệnh có thể được đưa vào và ở chế độ nền, tải trọng được thực thi và thực hiện thêm các thay đổi đối với đăng ký DOM. Điều này được thực hiện ở phía Máy khách, vì vậy nó không tìm kiếm phản hồi của máy chủ và do đó, DOM XSS được thực thi dễ dàng.  

Điều này có thể xảy ra khi tập lệnh độc hại được chuyển vào URL và tập lệnh phía máy khách đọc tập lệnh đó để sửa đổi DOM

Vì vậy, bây giờ câu hỏi là làm thế nào để chúng ta phân biệt giữa XSS bình thường và XSS DOM?

Lý do đằng sau XSS

XSS thường dễ thực thi và tạo do lỗi trong quá trình phát triển ứng dụng trang web đó. Điều này giúp kẻ tấn công dễ dàng lợi dụng vì tương đối dễ dàng khi kẻ tấn công biết được điểm yếu trong ứng dụng chỉ cần dán một số JavaScript hoặc mã khác vào vùng văn bản đầu vào. Rốt cuộc, tại sao không? . Nó chạy mã xấu. Đó không phải là lỗi của bất kỳ ai nhưng mã của nhà phát triển web thậm chí còn được phép gửi ngay từ đầu.  

Bạn nên xem xét việc xác thực hoặc hạn chế dữ liệu trong khi tạo các trang web có các trường nhập liệu

Tổn thất có thể xảy ra do XSS

XSS cho phép kẻ tấn công chèn một loạt tập lệnh độc hại vào trang web, sau đó chúng có thể sử dụng tập lệnh này để đánh cắp cookie của người dùng hoặc thậm chí truy cập thông tin đăng nhập, chi tiết thẻ tín dụng hoặc bất kỳ thông tin hữu ích nào của họ

Rủi ro do Cross-Site Scripting tạo ra cao hơn bạn mong đợi vì nó không chỉ cho phép kẻ tấn công lấy dữ liệu và thông tin của người dùng, điều mà nhiều lỗ hổng khác đặt ra để đạt được trong cuộc tấn công này. với XSS có một tính năng bổ sung. kẻ tấn công thực hiện những tội ác này trên các trang web mà trong mắt người dùng, phải hoàn toàn đáng tin cậy, vì vậy họ không lo lắng về loại hành vi trộm cắp này xảy ra và không nhất thiết phải nghĩ đến việc che mắt họ

Cách ngăn chặn các cuộc tấn công PHP XSS

Có một số điều bạn có thể làm để Bảo vệ XSS trên các Ứng dụng PHP. Một trong những điều tốt nhất bạn có thể làm là đảm bảo rằng bạn biết mình đang nhấp vào cái gì. Không nhấp vào các liên kết không xác định trong hộp thư đến của bạn và không nhấp vào các liên kết bạn nhận được trong tin nhắn văn bản hoặc hộp thư đến của tài khoản xã hội.  

Luôn biết liên kết đó đưa bạn đến đâu [kiểm tra đường dẫn từ URL]. Bạn có thể muốn xem xét việc tắt tập lệnh khỏi trường nhập liệu hoặc đảm bảo rằng bạn xác minh thông tin nhập vào trước khi nhấn Gửi. Người dùng cuối sẽ không thể lưu tập lệnh hoặc cài đặt tập lệnh trong ứng dụng của bạn. Nếu bạn có thể ngăn mã được thực thi, thì bạn biết rằng một cuộc tấn công tập lệnh trang web sẽ không hoạt động

Đảm bảo bạn luôn cập nhật trình duyệt web và các ứng dụng dựa trên web khác trên hệ thống của mình. Vì nhiều trình duyệt cũ hơn có các lỗ hổng cho phép các trang web truy cập tập lệnh XSS, bạn phải cập nhật trình duyệt của mình để đảm bảo bạn đón đầu các lỗi và lỗ hổng bảo mật mới nhất có thể xảy ra

Ngăn chặn XSS trong PHP

Sau đây là một số cách mà chúng tôi có thể ngăn chặn XSS trong các ứng dụng web của mình –

  • htmlspecialchars — Chuyển đổi các ký tự đặc biệt thành các thực thể HTML. Đây là một trong những phương pháp nổi tiếng để ngăn chặn XSS
    • < [ít hơn]
    • & [dấu và] &
  • Strip_tags — Tách các thẻ HTML và PHP khỏi một chuỗi. Hàm này cố gắng trả về một chuỗi có tất cả các byte NULL, thẻ HTML và PHP bị loại bỏ khỏi một chuỗi đã cho
  • Style-src — Giới hạn nguồn cho tệp CSS
  • Connect-src — Chỉ thị hạn chế các URL có thể được tải bằng giao diện tập lệnh. Điều này giúp bảo vệ chống lại các cuộc tấn công kịch bản chéo trang [XSS] trên Ứng dụng PHP,

Thư viện PHP của bên thứ ba

Ngoài ra còn có các thư viện PHP của bên thứ ba giúp ngăn chặn XSS. Một số trong số này được liệt kê dưới đây

  • PHP chống XSS
  • Trình lọc HTML
  • htmLuật

Trong số tất cả những thứ này, PHP Purifier thường xuyên được bảo trì và cập nhật. Nó khá đơn giản để sử dụng khi nhà phát triển có kiến ​​thức cơ bản về PHP

Phần kết luận

Cross-Site Scripting là một cuộc tấn công linh hoạt. Nó có thể được sử dụng để đánh cắp thông tin rất nhạy cảm như thông tin đăng nhập của người dùng, cookie và dữ liệu có giá trị thương mại.  

Chúng ta nên cố gắng không chèn dữ liệu do người dùng kiểm soát trừ khi nó rõ ràng là cần thiết để ứng dụng hoạt động. Nhận xét có thể là ví dụ tốt nhất nơi người dùng có thể nhập các tập lệnh gây ra XSS độc hại.  

Trước khi triển khai ứng dụng web PHP, hãy thử tạo một số trường hợp kiểm tra và thực hiện một số kiểm tra thâm nhập trên ứng dụng web của bạn để tìm và sửa các lỗ hổng bảo mật PHP mà kẻ tấn công có thể khai thác trong ứng dụng của bạn

Hãy cho tôi biết trong phần nhận xét bên dưới nếu bạn cần tôi thêm bất kỳ mẹo ngăn chặn XSS PHP nào khác

Đánh giá của khách hàng tại

“Dịch vụ lưu trữ trên nền tảng đám mây có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”

Sanjit C [Nhà phát triển trang web]

Shahzeb Ahmed

Shahzeb là Nhà tiếp thị kỹ thuật số có nền tảng Kỹ thuật phần mềm, làm việc với tư cách là Người quản lý cộng đồng — Cộng đồng PHP tại Cloudways. Anh ấy có tham vọng phát triển và mong muốn học hỏi & chia sẻ thông tin về Phát triển PHP & Laravel thông qua thực hành và thử nghiệm. Anh ấy thích đi du lịch và khám phá những ý tưởng mới bất cứ khi nào anh ấy có thời gian. Hãy liên hệ với anh ấy tại [email được bảo vệ]

Bạn có thể XSS trên PHP không?

XSS thường được chèn qua trang web bằng cách sử dụng siêu liên kết hoặc biểu mẫu web. Mã được chèn có thể được sử dụng thông qua bất kỳ ngôn ngữ phía máy khách nào như JavaScript, PHP, HTML .

Bảo vệ chống lại XSS trong PHP là gì?

Sử dụng hàm htmlspecialchars[] – Hàm htmlspecialchars[] chuyển đổi các ký tự đặc biệt thành các thực thể HTML. Đối với phần lớn các ứng dụng web, chúng tôi có thể sử dụng phương pháp này và đây là một trong những phương pháp phổ biến nhất để ngăn chặn XSS. Quá trình này còn được gọi là Thoát HTML.

HTML injection chéo trang có phải là kịch bản không?

Chèn HTML còn được gọi là Tập lệnh chéo trang . Đây là một lỗ hổng bảo mật cho phép kẻ tấn công chèn mã HTML vào các trang web được người dùng khác xem.

Ví dụ về cross site scripting là gì?

Ví dụ về các cuộc tấn công tập lệnh chéo trang được phản ánh bao gồm khi kẻ tấn công lưu trữ tập lệnh độc hại trong dữ liệu được gửi từ biểu mẫu liên hệ hoặc tìm kiếm của trang web . Một ví dụ điển hình về kịch bản chéo trang được phản ánh là biểu mẫu tìm kiếm, trong đó khách truy cập gửi truy vấn tìm kiếm của họ đến máy chủ và chỉ họ mới thấy kết quả.

Chủ Đề