Hướng dẫn htmlpurifier($config example) - htmlpurifier (ví dụ $ config)
Tôi đang cố gắng sử dụng máy lọc HTML mà không thành công. Show Mã của tôi dưới đây:
Tôi đang sử dụng điều này một cách chính xác. Ngoài ra, tôi đang sử dụng HTML5. Khi đọc các tài liệu, tôi không thấy nó là một lựa chọn. Config.php của tôi có phải là vấn đề không? Tôi nhìn vào ví dụ cơ bản và nghĩ rằng nó sẽ thẳng tiến. Đường dẫn của tôi là chính xác khi tôi kiểm tra nó với:
Tôi gặp lỗi với "không thể mở luồng".
Đã thêm lỗi Tôi đã thử thay đổi mã sau khi và xóa một số lỗi
Tôi vẫn nhận được các lỗi theo dõi và lỗi tôi đề cập đến lúc đầu.
Tôi muốn sử dụng nó trên nhiều giá trị bài đăng. Dưới đây chúng tôi sẽ xem xét các nguyên tắc bảo mật chung và mô tả cách tránh các mối đe dọa khi phát triển các ứng dụng sử dụng YII. Hầu hết các nguyên tắc này không chỉ riêng cho YII mà áp dụng cho trang web hoặc phát triển phần mềm nói chung, vì vậy bạn cũng sẽ tìm thấy các liên kết để đọc thêm về các ý tưởng chung đằng sau những ý tưởng này. Nguyên tắc cơ bản ¶Có hai nguyên tắc chính khi nói đến bảo mật cho dù ứng dụng nào đang được phát triển:
Đầu vào lọc ¶Đầu vào bộ lọc có nghĩa là đầu vào không bao giờ được coi là an toàn và bạn nên luôn luôn kiểm tra xem giá trị bạn có thực sự là một trong những giá trị được phép. Ví dụ: nếu chúng ta biết rằng việc sắp xếp có thể được thực hiện bởi ba trường 9, 0 và 1 và trường có thể được cung cấp thông qua đầu vào của người dùng, tốt hơn là kiểm tra giá trị chúng ta có ngay khi chúng ta nhận được. Về mặt PHP cơ bản trông giống như sau:
Trong YII, rất có thể bạn sẽ sử dụng xác thực biểu mẫu để kiểm tra giống nhau. Đọc thêm về chủ đề:
Thoát ra đầu ra ¶Đầu ra thoát có nghĩa là tùy thuộc vào ngữ cảnh mà chúng tôi đang sử dụng dữ liệu, nó sẽ được thoát, tức là trong bối cảnh của HTML, bạn nên thoát 2, 3 và các ký tự đặc biệt giống nhau. Trong bối cảnh của JavaScript hoặc SQL, nó sẽ là tập hợp các ký tự khác nhau. Vì dễ bị lỗi để thoát khỏi mọi thứ theo cách thủ công YII cung cấp các công cụ khác nhau để thực hiện thoát khỏi các bối cảnh khác nhau.Đọc thêm về chủ đề:
Thoát ra đầu ra ¶Đầu ra thoát có nghĩa là tùy thuộc vào ngữ cảnh mà chúng tôi đang sử dụng dữ liệu, nó sẽ được thoát, tức là trong bối cảnh của HTML, bạn nên thoát 2, 3 và các ký tự đặc biệt giống nhau. Trong bối cảnh của JavaScript hoặc SQL, nó sẽ là tập hợp các ký tự khác nhau. Vì dễ bị lỗi để thoát khỏi mọi thứ theo cách thủ công YII cung cấp các công cụ khác nhau để thực hiện thoát khỏi các bối cảnh khác nhau.
Tránh tiêm SQL ¶
SQL Injection xảy ra khi văn bản truy vấn được hình thành bằng cách ghép các chuỗi không được phân loại như sau: Thay vì cung cấp kẻ tấn công tên người dùng chính xác có thể cung cấp cho các ứng dụng của bạn một cái gì đó như 4. Kết quả SQL sẽ như sau:Đây là truy vấn hợp lệ sẽ tìm kiếm người dùng có tên người dùng trống và sau đó sẽ bỏ bảng 5 có lẽ dẫn đến trang web bị hỏng và mất dữ liệu (bạn đã thiết lập bản sao lưu thông thường, phải không?).
Trong YII, hầu hết các truy vấn cơ sở dữ liệu xảy ra thông qua bản ghi hoạt động sử dụng đúng các câu lệnh PDO trong nội bộ. Trong trường hợp các tuyên bố đã chuẩn bị, không thể thao tác truy vấn như đã được trình bày ở trên.
Tuy nhiên, đôi khi bạn cần truy vấn thô hoặc trình tạo truy vấn. Trong trường hợp này, bạn nên sử dụng các cách truyền dữ liệu an toàn. Nếu dữ liệu được sử dụng cho các giá trị cột, bạn sẽ ưu tiên sử dụng các câu lệnh đã chuẩn bị: 0Nếu dữ liệu được sử dụng để chỉ định tên cột hoặc tên bảng, điều tốt nhất cần làm là chỉ cho phép tập hợp các giá trị được xác định trước: Đọc thêm về chủ đề:
Thoát ra đầu ra ¶Đầu ra thoát có nghĩa là tùy thuộc vào ngữ cảnh mà chúng tôi đang sử dụng dữ liệu, nó sẽ được thoát, tức là trong bối cảnh của HTML, bạn nên thoát 2, 3 và các ký tự đặc biệt giống nhau. Trong bối cảnh của JavaScript hoặc SQL, nó sẽ là tập hợp các ký tự khác nhau. Vì dễ bị lỗi để thoát khỏi mọi thứ theo cách thủ công YII cung cấp các công cụ khác nhau để thực hiện thoát khỏi các bối cảnh khác nhau.Tránh tiêm SQL ¶
Đây là truy vấn hợp lệ sẽ tìm kiếm người dùng có tên người dùng trống và sau đó sẽ bỏ bảng 5 có lẽ dẫn đến trang web bị hỏng và mất dữ liệu (bạn đã thiết lập bản sao lưu thông thường, phải không?). 1Trong YII, hầu hết các truy vấn cơ sở dữ liệu xảy ra thông qua bản ghi hoạt động sử dụng đúng các câu lệnh PDO trong nội bộ. Trong trường hợp các tuyên bố đã chuẩn bị, không thể thao tác truy vấn như đã được trình bày ở trên. 2Lưu ý rằng việc xử lý htmlpurifier khá nặng, vì vậy hãy xem xét thêm bộ nhớ đệm. Đọc thêm về chủ đề:
Tránh CSRF ¶CSRF là một chữ viết tắt cho việc giả mạo yêu cầu chéo. Ý tưởng là nhiều ứng dụng cho rằng các yêu cầu đến từ trình duyệt người dùng được thực hiện bởi chính người dùng. Giả định này có thể là sai. Ví dụ: trang web 9 có URL 0, khi được truy cập bằng cách sử dụng yêu cầu nhận đơn giản, hãy đăng nhập người dùng. Miễn là yêu cầu của chính người dùng, mọi thứ đều ổn, nhưng một ngày nào đó, kẻ xấu bằng cách nào đó đang đăng 1 trên diễn đàn mà người dùng thường xuyên truy cập. Trình duyệt không tạo ra bất kỳ sự khác biệt nào giữa việc yêu cầu hình ảnh hoặc yêu cầu một trang để khi người dùng mở một trang với thẻ 2 được thao tác như vậy, trình duyệt sẽ gửi yêu cầu nhận đến URL đó và người dùng sẽ được đăng xuất từ 9.Đó là ý tưởng cơ bản về cách thức hoạt động tấn công CSRF. Người ta có thể nói rằng việc đăng xuất người dùng không phải là một điều nghiêm trọng, tuy nhiên đây chỉ là một ví dụ, có nhiều điều người ta có thể làm bằng cách sử dụng phương pháp này, ví dụ như kích hoạt thanh toán hoặc thay đổi dữ liệu. Hãy tưởng tượng rằng một số trang web có URL 4. Truy cập nó bằng cách sử dụng yêu cầu Get, gây ra chuyển giao $ 2000 từ tài khoản người dùng được ủy quyền sang người dùng 5. Chúng tôi biết rằng trình duyệt sẽ luôn gửi yêu cầu nhận được tải một hình ảnh, vì vậy chúng tôi có thể sửa đổi mã để chỉ chấp nhận các yêu cầu đăng trên URL đó. Thật không may, điều này sẽ không lưu chúng tôi, bởi vì kẻ tấn công có thể đặt một số mã JavaScript thay vì thẻ 2, cho phép gửi các yêu cầu POST đến URL đó.Vì lý do này, YII áp dụng các cơ chế bổ sung để bảo vệ chống lại các cuộc tấn công CSRF. Để tránh CSRF, bạn nên luôn luôn:
Đôi khi bạn cần vô hiệu hóa xác thực CSRF trên mỗi bộ điều khiển và/hoặc hành động. Nó có thể đạt được bằng cách đặt tài sản của nó: 3Để vô hiệu hóa xác thực CSRF cho mỗi hành động tùy chỉnh, bạn có thể làm: 4Vô hiệu hóa xác thực CSRF trong các hành động độc lập phải được thực hiện theo phương pháp 7. Không đặt mã này vào phương thức 8 vì nó sẽ không có hiệu lực. 5
Đọc thêm về chủ đề:
Tránh tiếp xúc với tệp ¶Theo mặc định, máy chủ Webroot có nghĩa là được chỉ vào thư mục 1 trong đó 2. Trong trường hợp môi trường lưu trữ được chia sẻ, có thể không thể đạt được, vì vậy chúng tôi sẽ kết thúc với tất cả các mã, cấu hình và nhật ký trong máy chủ Webroot.Nếu đó là trường hợp đừng quên từ chối quyền truy cập vào mọi thứ ngoại trừ 1. Nếu nó không thể được thực hiện, hãy xem xét việc lưu trữ ứng dụng của bạn ở nơi khác.Trong chế độ gỡ lỗi, YII cho thấy các lỗi khá dài dòng, chắc chắn rất hữu ích cho sự phát triển. Vấn đề là các lỗi dài dòng này cũng tiện dụng cho kẻ tấn công vì chúng có thể tiết lộ cấu trúc cơ sở dữ liệu, giá trị cấu hình và các phần của mã của bạn. Không bao giờ chạy các ứng dụng sản xuất với 4 được đặt thành 5 trong 2 của bạn.Bạn không bao giờ nên kích hoạt Gii hoặc thanh công cụ gỡ lỗi trong sản xuất. Nó có thể được sử dụng để có được thông tin về cấu trúc cơ sở dữ liệu, mã và chỉ cần viết lại mã với những gì được tạo bởi GII. Thanh công cụ gỡ lỗi nên tránh trong sản xuất trừ khi thực sự cần thiết. Nó phơi bày tất cả các chi tiết ứng dụng và cấu hình có thể. Nếu bạn hoàn toàn cần nó, hãy kiểm tra hai lần rằng quyền truy cập chỉ được giới hạn đúng cho IP của bạn. Đọc thêm về chủ đề:
Sử dụng kết nối an toàn qua TLS ¶YII cung cấp các tính năng dựa vào cookie và/hoặc phiên PHP. Đây có thể dễ bị tổn thương trong trường hợp kết nối của bạn bị xâm phạm. Rủi ro sẽ giảm nếu ứng dụng sử dụng kết nối an toàn thông qua TLS (thường được gọi là SSL). Vui lòng tham khảo tài liệu WebServer của bạn để biết hướng dẫn về cách định cấu hình nó. Bạn cũng có thể kiểm tra các cấu hình ví dụ được cung cấp bởi dự án H5BP:
Cấu hình máy chủ an toàn ¶Mục đích của phần này là để làm nổi bật các rủi ro cần được xem xét khi tạo cấu hình máy chủ để phục vụ trang web dựa trên YII. Bên cạnh các điểm được đề cập ở đây, có thể có các tùy chọn cấu hình liên quan đến bảo mật khác được xem xét, vì vậy đừng coi phần này là hoàn thành. Các lớp như yii \ Web \ urlmanager và yii \ helpers \ url có thể sử dụng tên máy chủ hiện đang được yêu cầu để tạo liên kết. Nếu máy chủ web được cấu hình để phục vụ cùng một trang web độc lập với giá trị của tiêu đề 8, thông tin này có thể không đáng tin cậy và có thể được người dùng gửi yêu cầu HTTP. Trong các tình huống như vậy, bạn nên sửa cấu hình máy chủ web của mình để chỉ phục vụ trang web cho tên máy chủ được chỉ định hoặc đặt rõ ràng hoặc lọc giá trị bằng cách đặt thuộc tính hostinfo của thành phần ứng dụng 9.Để biết thêm thông tin về cấu hình máy chủ, vui lòng tham khảo tài liệu của máy chủ web của bạn:
Nếu bạn không có quyền truy cập vào cấu hình máy chủ, bạn có thể thiết lập bộ lọc yii \ brilter \ hostcontrol ở cấp ứng dụng để bảo vệ chống lại loại tấn công đó: 6
Định cấu hình xác thực ngang hàng SSL ¶Có một quan niệm sai lầm điển hình về cách giải quyết các vấn đề xác nhận chứng chỉ SSL như: 7hoặc 8Nhiều nguồn nhầm gợi ý tắt xác minh ngang hàng SSL. Điều đó không nên được thực hiện vì nó cho phép các loại tấn công giữa trong số các cuộc tấn công. Thay vào đó, PHP nên được cấu hình đúng cách:
Lưu ý rằng tệp 1 nên được cập nhật. |