2009-08-22 25 views
5

Tôi đã có một trang mà nó đã được yêu cầu tôi cho phép một số tùy chỉnh người dùng thông qua CSS.cách quản lý bảo mật với người dùng thêm css bên ngoài (như myspace)

Tôi rất vui khi thực hiện việc này, nhưng tôi đang cố gắng tìm ra cách đảm bảo an toàn. Không có nhiều bảng định kiểu sẽ được áp dụng cho trang, nhưng ban đầu tôi nghĩ rằng nếu tôi vừa kiểm tra xem trang có phải là phần mở rộng css mà tôi có thể an toàn hay không.

Tuy nhiên, nghiên cứu tôi đã thực hiện cho thấy rằng xss dễ thực hiện thông qua css. Nhưng tôi đã không thể tìm thấy bất kỳ resouces về cách cho phép người dùng tạo ra css bên ngoài được bao gồm một cách an toàn.

Có ai có đề xuất hoặc tài nguyên cho việc này không?

MySpace quản lý để làm điều đó, cùng với một vài trang web khác, nhưng tôi không thể biết cách đảm bảo điều này sẽ được bảo mật.

Tôi không có bất kỳ dữ liệu người dùng 'bảo mật' nào trên trang nơi css bên ngoài đi. Nhưng tôi nhận được một vài biến cho một tìm kiếm.

---------------- dữ liệu bổ sung sau phản hồi của sliky ----------------------

Tôi không có kế hoạch cho phép mọi người dùng thêm một css bên ngoài. Tuy nhiên, biến css có thể được đặt bởi người dùng đủ điều kiện đặc biệt và sau khi biến đó có sẵn, về cơ bản, mọi người có thể đặt biến đó theo ý họ. Phương pháp duy nhất để nhận được biến đó đang được sử dụng là tự lan truyền URL, vì vậy có lẽ tôi lo ngại về vấn đề bảo mật, nhưng tôi nghi ngờ nó.

Tôi có thể đặt để trang không được lập chỉ mục bằng biểu định kiểu bên ngoài, nhưng tôi vẫn lo ngại về cách duy trì bảo mật cho người dùng cuối.

tôi sẽ có một liên kết trên trang web của anh nơi mà nó sẽ là http://mysite.com/page?useracct=12343&extcss=http://location/of/css.css

tôi thiết lập các useracct, vì vậy chỉ nơi người sử dụng tôi cho phép để cho phép các css khác nhau đã liên kết được tạo cho trang của họ. Trên trang web của tôi, tôi sẽ liên kết với tài khoản người dùng đó bằng trang css.

Vì vậy, ai đó có thể không chỉ đi cùng và nói http://mysite.com/page?extcss=http://new/dangerous/css.css

Tuy nhiên, họ có thể tạo liên kết http://mysite.com/page?useracct=12343&extcss=http://new/dangerous/css.css Cách duy nhất ai đó sẽ nhận được trang đó sẽ là nếu người đó đã tạo ra sự nguy hiểm css chuyển tiếp liên kết đó.

Tôi đoán nếu tôi băm và ướp các extcs, nó có thể an toàn hơn. Có lẽ đó là cách tốt nhất để đi?

Trả lời

4

Sử dụng ngôn ngữ có thư viện CSS hoặc viết trình phân tích cú pháp để tạo cấu trúc giống như AST từ CSS và sau đó kiểm tra các nội dung tinh quái.

Điều này có thể khó hơn âm thanh, những thứ như kích thước div (nhấn chìm toàn bộ trang), các đơn hàng nổi và z sẽ khó quản lý và bạn có thể phải có giới hạn về giá trị bạn có thể cung cấp.

một ý tưởng tốt đẹp

Tạo một lược đồ theming dựa trên XML có thể được dịch sang CSS. Cho phép người dùng tải lên hình ảnh + XML để tạo chủ đề.

XML đơn giản hơn để kiểm soát.

PHP CSS Parser, Python CSS parsing

Good Luck

+0

phản hồi rất thông tin Aiden và cảm ơn liên kết trên trình phân tích cú pháp css. Tôi không nghĩ rằng người dùng tải lên xml + hình ảnh là những gì họ đang thực sự tìm kiếm. Chỉ cần cố gắng áp dụng một số kiểu đơn giản và để định vị, tôi luôn bao gồm biểu định kiểu của mình sau đó để xử lý mọi vấn đề nổi/z-index v.v. Đó là chủ yếu là một số kích thước nhỏ, màu sắc và hình ảnh nền mà họ có thể điều chỉnh. Với 'điều này có thể khó hơn âm thanh' và in đậm 'Chúc may mắn' bạn có gợi ý rằng có lẽ tôi không nên làm điều này? – pedalpete

+0

Không sao, chỉ cần nhớ rằng những thứ như thế! Những thứ quan trọng và tối nghĩa khác có thể khiến bạn khó chịu nếu bạn cho phép người dùng tải lên css (hoặc bất kỳ nội dung nào cho vấn đề đó). Làm cho nó gần như toán học ... làm việc ra các hoán vị của tất cả các cú pháp có sẵn bạn muốn chặn và kiểm tra xem nó hoạt động. Phụ thuộc vào cách vệ sinh đầu vào quan trọng là ... nếu đó là một trang web nhỏ cho bạn bè, bạn có thể thư giãn một chút :) Đi cho nó tôi nói! –

2

Trong khi hiệu quả có ngôn ngữ riêng của bạn cho phép việc bổ sung CSS có vẻ tốt, bạn vẫn có thể chắc chắn kết thúc với những vấn đề tương tự như cho họ chỉ cần viết bất cứ điều gì (nói tải các tập tin bên ngoài, vv) và được trong một thế giới của tổn thương.

Mô hình tốt hơn, từ quan điểm bảo mật, suy nghĩ chính xác những gì họ sẽ muốn tùy chỉnh và cho phép họ chỉ chỉnh sửa những điều đó.

Vì vậy, bạn có thể cung cấp khả năng để thiết lập:

  • nền màu
  • Fonts
  • hình ảnh cho những thứ khác nhau
  • Etc

Twitter (lần cuối cùng tôi sử dụng nó anyway) đã có một phương pháp tốt đẹp để làm điều này, và kết quả cũng là trang web có thể tùy chỉnh, nhưng vẫn duy trì một cái nhìn tiêu chuẩn, trong đó, IMHO, là g reat.

+0

mặc dù tôi đồng ý với bạn mượt, nhiệm vụ tạo ra một hệ thống quản lý thiết kế như twitter là khá khó khăn. Tôi chỉ đang cung cấp khả năng cho một vài người dùng, những người sẽ cải tiến thiết kế và bố cục tốt hơn tôi có thể làm. Mối lo ngại về bảo mật của tôi là khi tôi cung cấp khả năng cho những người dùng đặc biệt này thêm một css, về cơ bản, mọi người đều có thể sử dụng biến để thiết lập css của riêng họ. Mặc dù họ sẽ cần phải gửi trên URL mà họ tạo cho nó để sinh sôi nảy nở. Tôi có thể thiết lập không có chỉ số cho khi css bên ngoài được thiết lập, nhưng vẫn còn có mối quan tâm về những gì tôi nhận được bản thân mình vào. – pedalpete

+0

Nó khá tầm thường để làm những gì twitter làm.Chỉ cần cho phép những điều cụ thể (như tôi đã nói) và nếu bạn muốn có một giao diện thú vị để lựa chọn, jQuery sẽ cung cấp những gì bạn cần. –

0

Có nhiều cách để CSS có thể thực thi JS tùy ý. Xem

Nếu bạn cần một phân tích cú pháp CSS linh hoạt và khử trùng, bạn có thể có một cái nhìn tại CssValidator và thử nghiệm liên quan của nó hiển thị một số nội dung của nó: CssValidatorTest

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