2014-11-14 20 views
5

Điều gì có thể xảy ra nếu tôi vô hiệu hóa dịch vụ $ sce hoàn toàn?

angular.module('app').config(function ($sceProvider) { 
    $sceProvider.enabled(false); 
}); 

Trả lời

3

Bạn chỉ nên tắt SCE nếu bạn chắc chắn 100% tất cả các ràng buộc ứng dụng (HTML, URL ...) đều an toàn. Ví dụ, nếu ứng dụng luôn luôn khử trùng đầu vào của người dùng trên máy chủ hoặc máy khách trước khi kết xuất thì buổi lễ bổ sung được thực thi bởi SCE có thể không cần thiết. Tuy nhiên, rất hiếm khi bạn có thể 100% tích cực rằng tất cả các giá trị đều an toàn, đặc biệt khi ứng dụng phát triển lớn và được nhiều nhà phát triển mã hóa. Việc kích hoạt SCE thi hành rằng các giá trị chỉ được đánh dấu rõ ràng là đáng tin cậy khi sử dụng một trong các phương thức $sce.trustAsXXX có thể được ứng dụng sử dụng.

Ví dụ: nếu bạn sử dụng ngBindHtml để hiển thị một số HTML, AngularJS sẽ ném lỗi trừ khi biến phạm vi được gán cho ngBindHtml được gói với $sce.trustAsHtml. Việc thực thi tương tự xảy ra khi bạn đặt templateUrl của tuyến đường hoặc chỉ thị. Điều này làm cho ứng dụng an toàn hơn bằng cách không nhanh, cho bạn cơ hội để kiểm tra từng nơi xảy ra lỗi và quyết định có nên tin tưởng hay sửa chữa nó hay không.

Một lưu ý cuối cùng, nếu bạn bao gồm ngSanitize hoặc thực hiện một dịch vụ $sanitize, sau đó bạn không cần phải vô hiệu hóa SCE sử dụng giá trị HTML không tin cậy như AngularJS sẽ chỉ khử trùng các yếu tố đầu không tin cậy sử dụng dịch vụ $sanitize. Tương tự, nếu một URL mẫu chia sẻ nguồn gốc như ứng dụng, không cần phải bao bọc nó một cách rõ ràng.

+1

Tuyệt vời! Đây là loại câu trả lời tôi mong đợi, cảm ơn bạn! – artuska

+0

Bạn có thể làm rõ ý nghĩa của bạn trong đoạn cuối không? – naXa

+0

"Hiếm" có thể là chủ quan, nó liên quan đến loại dự án đang được thực hiện. Tôi có một dự án với 0 đầu vào người dùng, ví dụ. –

0

Tôi có thể tắt hoàn toàn SCE không?

Có, bạn có thể. Tuy nhiên, điều này không được khuyến khích. SCE cung cấp cho bạn rất nhiều lợi ích bảo mật cho ít chi phí mã hóa. Sẽ khó khăn hơn nhiều khi sử dụng một ứng dụng bị vô hiệu hóa SCE và tự bảo mật nó hoặc cho phép SCE ở giai đoạn sau. Nó có thể làm cho tinh thần để vô hiệu hóa SCE cho trường hợp bạn có rất nhiều mã hiện có được viết trước khi SCE được giới thiệu và bạn đang di chuyển chúng một mô-đun tại một thời điểm.

(từ documentation)

Các vấn đề liên quan