전역 공지사항에 HTML이 없습니다

이 주제는 Discourse 팀에 의해 해결되었습니다. 아카이빙 목적으로 원래 주제를 그대로 두겠지만, @Roman과 팀이 이 문제를 해결했습니다.


최근 SMTP 설정을 업데이트하기 위해 Discourse를 다시 구축했는데, 전역 공지( global notice)의 HTML 태그가 이제 렌더링되지 않습니다.

태그가 있는 상태의 모습은 다음과 같습니다:

Welcome to the NEW Real Racin' USA Motor Sports Forums!


Your prayers and wishes have been answered.

We've prepared a faster, newer, and easier-to-use forum experience for you, copying everything over from the old forum into this one. All of your topics, posts, and user profiles have remained intact, just as you left them!

Please read our "I Want My Account Back!" post for instructions on how to get back into your account.

Now that the dust has mostly settled, we're still checking this forum to ensure it is working properly for everyone.

For all updates on the forum and to get assistance, visit the Sunshine State Racing Facebook page.

하지만 다시 구축한 후에는 다음과 같은 결과가 나타납니다:

최근 커밋에서 전역 공지사항에 대한 몇 가지 변경 사항을 찾았는데, 이 변경 사항으로 인해 해당 기능이 비활성화되었습니다.

그렇다면, 이제 전역 공지사항에 링크를 포함할 수 있는 방법이 있을까요?

제 대안은 게시글을 작성하고 이를 배너 주제로 고정하는 것이었습니다.

네, 이제 전역 공지 사이트 설정에 HTML을 사용할 수 없으며, 순수 텍스트만 허용됩니다. 이를 다른 사용자 입력과 동일하게 취급하여 정제(sanitize)하도록 선택했습니다.

위에서 언급했듯이, 대안으로 배너 토픽을 사용하는 것입니다.

아쉽네요, 정말 유용한 정보가었는데.

설명해 주셔서 감사합니다.

음, 제 개인적인 의견이지만 이 두 가지는 목적에 큰 차이가 있습니다.

글로벌 배너에는 특정 목적이 있습니다. 예를 들어, 중요한 주제에 대해 포럼 사용자에게 공지할 때 사용하는 것이죠. 사용자가 배너를 닫았으면 그 설정이 유지되어, 원래 글로벌 공지사항으로 보일 수 있는 업데이트를 볼 수 없게 됩니다.

네, 긴급 상황에서 비해제 배너가 얼마나 유용한지 잘 알고 있기 때문에 이 설정을 유지하기로 결정했습니다. 그러나 비제거된 HTML을 허용하는 것은 잠재적으로 위험할 수 있습니다.

글로벌 공지사항을 설정할 권한이 있는 사용자가 테마 컴포넌트도 생성할 수 있나요? 그렇다면 여기에는 추가적인 공격 벡터가 없는 것이죠?

정확히 말씀드리면, 이 설정은 관리자만 업데이트할 수 있으므로 보안 문제로 보지 않습니다. 이는 사이트 설정에서 HTML 사용을 금지하고, 이를 지원하는 다른 도구를 사용하려는 지속적인 노력의 일환입니다.

HTML 허용에 대한 제 주장을 펼쳐 보겠습니다. 저는 투자자를 위한 포럼을 시작하는 클라이언트와 함께 작업하고 있습니다(어제 마침 폐쇄 베타가 시작되었습니다). 그들의 법무팀은 면책 조항을 요구합니다. 이 조항은 다음과 같은 조건을 충족해야 합니다:

  • 포럼의 모든 페이지에 눈에 띄게 표시되어야 합니다.
  • 닫을 수 없어야 합니다.

즉, 전역 공지입니다.[1]

예시로(제가 작업 중인 사이트는 아니지만 같은 분야에 해당합니다) Freetrade의 면책 조항을 참고해 보세요. 여기서 중요한 점은 법무팀이 공지 내에 HTML이 포함되어 있는지에는 _관심조차 없다_는 것입니다. 그들은 단지 그 조항이 존재하며, 사용자가 보지 못했다고 주장할 수 없는 상태인지 확인하고 싶어 할 뿐입니다.

불행히도 이 공지는 큰 텍스트 블록이기 때문에 보기 흉합니다. 다행히 법무팀은 더 작은 글꼴과 전체 면책 조항에 대한 링크 사용에는 동의합니다. 팀은 지난주 면책 조항 링크를 포함한 문구를 법무팀에 제출했습니다. 그런데 이번 주에 전역 공지에는 더 이상 HTML이 허용되지 않는다는 사실을 알게 되었습니다. 정말 재밌네요.

그런데, 이 기능을 본래 의도된 목적(“긴급, 비상, 닫을 수 없는 전역 배너 공지”)으로 사용한다면 상태 페이지나 다른 자세한 정보를 확인할 수 있는 곳으로 링크할 수 있는 방법이 있다면 매우 유용하지 않을까요?

하지만 사실 이는 "다른 사용자 입력"과는 다르지 않나요? 이는 소수의 사람만 변경할 수 있는 사이트 설정입니다. 사이트 소유자의 관점에서 볼 때, 이는 사용자 입력이 아니라 사용자에게 제공되는 인터페이스의 일부입니다.[2]

어딘가에 그 이유에 대한 설명이 있을까요? 만약 여러분이 링크를 허용하는 닫을 수 없는 전역 배너를 지원하는 다른 도구를 개발 중이라면,[3] 언제 준비가 될지 알면 도움이 될 것입니다. 가능하다면 커스터마이징을 설정해야 하는 상황을 피하고 싶습니다.

조금 짜증스러운 것처럼 느껴진다면 사과드립니다. 이 변경 사항이 올 줄 몰랐고, 우리를 난처한 위치에 놓이게 했습니다. 커뮤니티는 다음 주에 더 큰 청중에게 공개될 예정이었지만, 이 변경 사항은 그 계획에 차질을 빚게 했습니다.



  1. 이것이 기능의 오용이라는 논리도 이해합니다. 하지만 만약 우리가 이 기능을 자체적으로 구축한다면, 그 기능은 완전히 전역 공지처럼 작동할 것입니다. :man_shrugging: ↩︎

  2. Discourse의 관점에서 관리자는 사용자라는 점은 이해합니다. 하지만 이 경우, 그렇게 생각하는 것이 다소 잘못된 방향인 것 같습니다. ↩︎

  3. 그리고 스타일링도そうですが, 그것은 부차적인 문제입니다. ↩︎

이렇게 생각한 이유는 주로 데이터베이스 항목을 더 보호하기 위해서이며, 과거에 사용하던 구식 포럼에서 인코딩 문제로 인해 발생한 경험 때문입니다.

해당 포럼에서는 이모지가 &# 형식으로 변환되었는데, 이를 인용하면 변환 시 “Invalid byte sequence in utf-8” 오류가 발생했으며, 포럼에서는 이모지가 � 기호로 표시되었습니다.

향후 업데이트에서 HTML 태그에 대해서도 같은 문제가 발생할 수 있다고 생각했습니다. 그렇게 되면 데이터베이스에 문제가 생겨 모든 커뮤니티가 작동 불가능해질 수 있기 때문입니다.

코드를 더 잘 아는 분이라면, 각 수정 사항이 다운로드/업데이트를 위해 메인 브랜치로 이동하기 전에 여러 검사를 거치기 때문에 이런 일이 발생하지 않을 것이라고 안심시켜 줄 수 있을 것입니다. Discourse 팀은 온라인 커뮤니티를 원하는 모든 사용자를 위해 시스템을 자체적으로 완결된, 문제 없는 1클릭 솔루션으로 유지하려 노력하고 있으며, 지금까지 잘 해내고 있습니다!

그럼에도 불구하고, 새로운 솔루션이 발표될 때까지는 제 간단한 수정 방법이 지금까지 잘 작동하고 있습니다. 배너 주제(banner topics)를 닫을 수 있어서 화면이 덜 어수선해지는 것도 장점입니다.

불편을 드려 죄송합니다. 비닫힘 가능 배너를 생성하려면 다음 테마 컴포넌트를 확인해 주세요:

이것은 전역 공지(Global notice)보다 훨씬 강력하고 커스터마이징이 가능합니다.

전역 공지 설정에서 HTML 지원을 다시 활성화했습니다. 원활한 전환을 보장하는 더 나은 방법을 모색하고 있습니다.

아래 설명의 전역 공지 필드에 다음과 같은 내용을 입력할 수 있습니다:

“HTML 지원은 향후 버전에서 제거될 예정입니다”

또한 HTML이 비활성화된 상태에서도 설명에는 여전히 "HTML 허용"이라고 표시되었습니다.

@Roman_Rizzi 전역 공지사항이 포함된 릴리스는 언제 배포될 예정인가요?

이 내용에 대해 논의한 결과, 전역 공지 설정에 대한 HTML 지원을 유지하기로 결정했습니다. 따라서 해당 기능은 당분간 제거되지 않을 것입니다.

그렇다면 제가 놓치고 있는 부분이 무엇일까요? 저희 포럼에서 작동하지 않는 이유는 무엇일까요?

Discourse를 업그레이드하세요. 며칠 전에 다시 활성화되었으므로 업그레이드를 수행하면 해결될 것입니다.

빠른 답변 감사합니다! 방금 업그레이드했는데도 여전히 작동하지 않아요 (HTML이 표시됩니다).