2011-05-02 8 views
3

그래서 저는 새로운 커뮤니티 사이트에서 사용자가 자신의 CSS를 작성할 수 있도록 고려하고 있습니다. 아마도 프로필 페이지에 텍스트 영역이있을 것입니다. 그런 다음 웹 사이트가 사이트를 탐색 할 때마다 웹 사이트가 브라우저를 전송하는 CSS가됩니다. 이것은 상당히 명확하고 저렴한 사용자 지정처럼 보이지만 완료 한 것을 본 적이 없습니다.사용자 정의 CSS : 무엇이 잘못 될 수 있습니까?

사용자가 복구 할 수 없도록 자신의 페이지를 엉망으로 만들지 않도록 몇 가지 보호 장치를 추가한다고 가정 할 때 사이트 전체 관점에서 잘못 될 수있는 것이 있습니까? 아마 보안을 wrt?

답변

2

OWASP에는 escaping untrusted CSS에 대한 좋은 조언이 있습니다.

사용자에게 장표를 제공하는 것보다 일반적인 외양 기본 설정 (글꼴 크기, 스타일 및 색상 등)을 제안하는 것이 좋습니다. 이는 기술적 인 사용자가 더 쉽게 접근 할 수있을뿐만 아니라 기술 지원 요청 가능성이 줄어 듭니다 ('리셋 스타일'버튼을 포함시켜 이메일을 보내지 않고도 변경 사항을 취소 할 수 있음).

사이트 전체 CSS 스타일을 덮어 쓸 정도로 편한 사용자는 브라우저 기반 사이트 별 스타일 시트를 인식 할 가능성이 높기 때문에 빈 스타일 상자를 제공 할 때 어떤 이점도 보이지 않습니다. 설명하다; 사용자가 자신의 페이지를 다른 방문자 (예 : tumblr)의 테마로 꾸미면 더 많은 의미가 있습니다.

1

CSS를 통해 자바 스크립트 코드를 허용하는 것으로 알려진 Internet Explorer에주의하십시오. 다른 사용자가이 맞춤 CSS를 보게되면 XSS 공격의 근원이 될 수 있습니다.

그 외에도 보안 측면에서는 문제가 없을 것입니다.

하지만 사용자가 제공하는 CSS는 좋지 않을 수 있습니다. 직접 CSS를 제공하는 대신 색상/크기 등을 선택하고 필요한 CSS를 직접 생성 할 수있는 편집기를 사용할 수 있습니다.

맞춤 CSS를 허용하려면 위생 처리를해야합니다. 당신이 내 의견을 묻는다면, 나는 위에서 언급했듯이 그것에 반대 투표를하고 편집인과 같은 방법을 사용할 것입니다.

1

그럼 그들은 css에서 이미지 태그를 통해 악성 스크립트를로드 할 수 있습니다. 사람들이 사이트를 변경하게하는 것은 항상 위험한 길입니다.

사람들이 보안에 구멍을 찾으려고 시도하기 때문에 CSS의 유효성을 확실히 확인해야합니다.

나는 그들이 특정 부분을 변경할 수있는 PHP 제어 인터페이스를 만들 것입니다. 검증하기가 쉽고 밤에도 잠 못 이루지 않습니다.

1

우리가 만든 내장 CMS를 통해 이전에 이런 종류의 동작을 허용했지만 큰 문제는 없었습니다. 우리가 한 일은 편집 권한이 제한되어 있었고 허용되지 않았기 때문입니다 사이트의 전반적인 모양과 느낌과 함께 할 수있는 일을하십시오.

내가 서두르 자 우리는 우리의 상황 (사람들이 웹 경험이 거의 없었던 고객 사이트)에서 잘 작동하는 CSS를 직접 제어하지 않고 'CSS 빌더'를 그들에게 주었다.

실제 글꼴보다 쉽게 ​​들릴 수 있습니다. 글꼴을 변경할 수 있다면 좋겠지 만, 멀티 테넌시 사이트에서 Times의 기본 글꼴 (우리는 글꼴 목록을 만들어야했습니다. 그 폰트로), 일부는 Arial (또 다시 새로운 화이트리스트)과 함께.

jquery를 사용하여 일반적인 내용 페이지의 의사 라이브 미리보기를 변경 내용으로 제공 할 수 있었고 즉시 수행 할 수있었습니다.

즉, 우리는 여전히에 클라이언트가 문의했을 때 문의했기 때문에 실수가 아니 었습니다. - 그들은 다음 24PT 텍스트를 허용, 본문 텍스트의 스타일 을 만드는 경우 그래도 난 제한 선택의 수단으로 화이트리스트의 사용을 옹호 할 수

  • : 요약 그래서

    사용자 인터페이스 용어로는 을 잘 징수하지 않을 것입니다.이 어리석은 사람을 멈추지 않을 수 있지만, 그것은 그들이있어 얼마나 바보에게 보여 적어도 확실히거야 -

  • 사용 라이브 미리보기가 가능한 그들은 그들이 스타일을 구축 으로 같이 살펴 보겠습니다 무엇을 볼 수 있도록 ! :)
1

다른 답변에서 작성한 좋은 말 이외에 사용자가 CSS를 완전히 편집 할 수있는 능력을 부여하면 사이트에 위험 할 수 있으며 일반 사용자에게 많은 가치를 부여하지는 못합니다. CSS를 마스터하지 않습니다.

이러한 마스터 링 CSS는 브라우저 확장 (예 : Stylish)을 사용하여 사용자의 노력과 사이트의 보안 위험없이 CSS를 사용자 정의 할 수 있습니다.

나는 더 높은 수준 (사용자가 사용하기 쉬운 인터페이스를 사용하여 색상, 글꼴 등을 선택할 수있게 해줌)을 수행하거나 아무것도하지 않을 것입니다.

관련 문제