下面是我想防止的一種情況,按照標準,這是正確的行為,但對用戶而言,這是可怕且不安全的。作為一名程式員,我看到 unicode 并逃跑,但用戶可能不會不考慮這一點。
不知道對它進行 ASCII 轉換并檢查 xn 的最佳方法——快速拒絕;我在詢問是否有任何行話可以幫助我并可能幫助他人。
到目前為止,我已經嘗試過,在線提供的 punycode 功能尚不了解,但鏈接在這里:
將帶有破折號的 punycode 轉換為 Unicode
在沒有 xn-- 或- 出現在通過linkify 的正常鏈接中的情況下,我沒有立即完成這項作業。
目標是在鏈接程序之后檢查 punycode 并拒絕它。任何其他鏈接都可以避免盡可能多的誤報。
下面的鏈接是一個演示,不要實際點擊它。突出顯示它,看看我的意思。
let linkify = (text) => {
return text.replace(/(?:(?:(?:https?|ftps?):)?\/\/)(?:\S (?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.) (?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?/igm, (url) => {
return '<a target="_blank" href="' url '">' url '</a>'
});
};
document.querySelector(".linkarea").innerHTML = linkify("HACKER LINK: http://www.y?utube.com/") " url is unicode but the actual link is http://www.xn--yutube-iqc.com/ which tricks people";
<div class="linkarea">
<div>
uj5u.com熱心網友回復:
最簡單的解決方案是構造一個URL物件并檢查主機名是否包含xn--:
let linkify = (text) => {
return text.replace(/(?:(?:(?:https?|ftps?):)?\/\/)(?:\S (?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.) (?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?/igm, (url) => {
if (new URL(url).hostname.includes('xn--'))
return 'I enjox bad links';
else
return '<a target="_blank" href="' url '">' url '</a>'
});
};
const linkarea = document.querySelector(".linkarea");
linkarea.innerHTML = linkify(linkarea.innerHTML);
<p class="linkarea">
HACKER LINK: http://www.y?utube.com/ url is unicode but the actual link is www.xn--yutube-iqc.com/ which tricks people
</p>
或者,您也可以構造一個a元素并檢查其.href屬性;它還將包含(已決議和)punycoded url,其中包含xn--.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396301.html
標籤:javascript
下一篇:揭開Vue異步組件的神秘面紗
