The three-regex gate could be bypassed (an attribute without a space, <svg/onload>, entity-encoded or tab-split javascript: URLs, MathML xlink:href, base, meta refresh, forms) and it blanked a whole post or category when ordinary text such as "Data: 12 maja 2024" matched. - sanitizeJournalHtml runs sanitize-html with the Journal plugin's bluemonday policy: UGC elements plus footer, class, schema.org microdata, four validated inline styles, footnote roles, dir=auto, two chat transcript data attributes; http, https, mailto and relative URLs only - gateJournalHtml and isSafeJournalHtml keep their signatures; html is always the sanitized value and is never blanked - post body, category content and both page payloads are sanitized; the blocked notice, its style and string, and the blocked props and content_blocked field are removed - toPostView moves to postView.ts so list pages and cards do not load the sanitizer - tests cover every bypass from the review, the Data:/metadata: text and an imported author footer; the SSR smoke expects the unsafe sample's safe paragraphs
39 lines
964 B
JSON
39 lines
964 B
JSON
{
|
|
"journal": {
|
|
"index": {
|
|
"title": "Najnowsze wpisy",
|
|
"empty": "Nie ma jeszcze żadnych wpisów."
|
|
},
|
|
"pagination": {
|
|
"label": "Stronicowanie",
|
|
"previous": "Poprzednia strona",
|
|
"next": "Następna strona",
|
|
"pageTitle": "Strona {page}"
|
|
},
|
|
"post": {
|
|
"publishedOn": "Opublikowano {date}",
|
|
"readingTime": "{minutes} min czytania",
|
|
"by": "Autor:",
|
|
"related": "Powiązane wpisy",
|
|
"previous": "Poprzedni wpis",
|
|
"next": "Następny wpis"
|
|
},
|
|
"category": {
|
|
"empty": "W tej kategorii nie ma jeszcze wpisów."
|
|
},
|
|
"tag": {
|
|
"title": "Wpisy z tagiem {name}",
|
|
"empty": "Nie ma jeszcze wpisów z tym tagiem."
|
|
},
|
|
"author": {
|
|
"title": "Wpisy autora {name}",
|
|
"posts": "Wpisy",
|
|
"empty": "Ten autor nie opublikował jeszcze żadnych wpisów."
|
|
},
|
|
"readMore": "Czytaj dalej",
|
|
"rss": {
|
|
"title": "Kanał RSS"
|
|
}
|
|
}
|
|
}
|