我們的網絡服務已經被一些Zalgo text打了,我想爲未來想出一個好的解決方案。我們的政策是接受所有的用戶輸入並將其保存在永久存儲器中(我們正確地爲後端編碼輸入,所以這部分是可以的)。在輸出階段,我們通過帶有白名單的過濾器/解析器運行原始用戶輸入,以避免XSS攻擊和其他混亂。最近有些用戶發現了Zalgo的世界,他們只是喜歡用這種方式給其他人帶來麻煩。如何避免Zalgo文字在整個地方流血而不完全刪除?
正如我所看到的,Zalgo文本只是一段從預期容器泄漏出來的Unicode文本。因此,我認爲自動刪除所有複雜的組合角色過於激烈的防守。 有沒有人知道一個CSS技巧來強制Zalgo文本被包含在一個給定的父元素中,而沒有一些討厭的副作用?
舉例來說,如果我有
<section class="userinput">
... user input here ...
</section>
我怎麼能確保用戶輸入不的section.userinput
境外泄露?我猜overflow: hidden
或clip: rect(...)
可能是正確的答案,但是你知道這個用例更好嗎?最好我仍然可以使用section.userinput { max-height: 200vh; }
或類似的東西來避免用戶創建人爲的長評論。如果某些評論比200vh
長,則它應該只有一個滾動條,僅用於評論。通常,整個頁面應該只有一個滾動條。
請注意,我試圖在視覺域中解決問題。我非常樂意接受任何有效的UTF-8序列作爲用戶輸入,我很好,如果一個混亂的用戶評論導致該用戶評論看起來像廢話。我只是想盡量避免這個地方的垃圾溢出。具體而言,我不是trying to block the zalgo text或filter zalgo-like text before display。