javascript - JS正则表达式在文本(原始html)之间添加文本?
问题描述
我试图阻止设置为 HTML 的原始文本的制表符。例如,如果我有Check out more information here: <a href="linktobadsite.com">Click me</a>
,我希望能够'rel="noreferrer"
仅将 a 添加到锚标记内的属性。我想出的最好方法是,value.replace(/href/g, 'rel="noreferrer" href');
但如果我有这样的文本,例如“在锚标记内设置 href”,它将显示为“在锚标记内设置 href 'rel="noreferrer"”。仅在<a href="" _target>
文本之间添加 noreferrer 的正确表达是什么?
解决方案
我猜您正在从用户那里收到此文本,并希望将其显示给其他用户,从而最大限度地减少攻击者成功窃取某些信息的机会。
所以假设你解析这个文本并在 JS 中有一个 HTML 表示,然后你可以遍历这个对象并为每个锚添加rel=noreferrer
属性。
然后,您可以再次将其序列化为字符串并将其“安全”地显示给其他用户。
永远不要相信用户输入,总是验证它。
这是很多工作。
我对这个问题的看法是在您的回复中发送一个额外的标题。标题Referrer-Policy
最适合您的情况,因为您可以将其设置为same-origin
并完成此操作。
一旦您的用户加载您的网站(并且您发送所有标题和内容),浏览器将记住此政策
same-origin 将针对同站点的来源发送引荐来源网址,但跨域请求不会发送引荐来源网址信息。
这意味着对于指向不同域的每个链接,当链接被访问时,浏览器将不会发送任何推荐人信息。
您可以在此处找到有关
Referrer-Policy
标头值的更多信息。
显然,这将在整个站点范围内强制执行该策略,或者至少在浏览器收到新的标头值之前。
如果您无法设置额外的标头,您可以使用meta
HTML 文档中的标签设置此政策
<meta name="referrer" content="same-origin">
推荐阅读
- android - 致命异常:java.lang.IllegalStateException:未知 URL:content://media/external 是隐藏 API
- java - loadAll() 和 loadById(Long id) 时 JSON 序列化的区别
- amazon-web-services - 如何在 DynamoDB 中为图书馆应用程序建模此数据
- firebase - GA4中活跃用户和总用户的区别
- r - 映射列表并将变量插入函数
- javascript - 为什么 z-index 在文本中不起作用,即使它已设置?
- python - Simplify Python Output in Visual Studio Code
- jquery - 光标位置上的多个背景图像更改
- linux - Yocto do_package:未找到 SYSTEMD_SERVICE_ 中指定的服务单元
- javascript - 避免使用`useCallback`重新渲染