gpt4 book ai didi

javascript - 如何在javascript中实现if?

转载 作者:行者123 更新时间:2023-11-28 13:55:57 25 4
gpt4 key购买 nike

下面的 javascript 提取 www.google.com来自http://mysite.com?url=www.google.com并将其写为 <a> href链接

<script> 
var urll = (window.location.search.match(/[?&;]url=([^&;]+)/) || [])[1];
document.write('<a href="http://'+urll+'">url</a>');
</script>

它的问题是,当它提取 url 时 <a> href值变成 http://mysite.com/www.google.com所以if应该说明原始网址是否 http://mysite.com?url=www.google.com没有http:// ?url=前面然后将其添加到href之后值形成<a href="http://www.google.com">url</a>

在对上一个问题的评论中,有人给了我这个

if (link.substr(0, 7) !== 'http://') { link = 'http://' + link; }

但我真的不知道如何实现它,因为我从未使用过 if在 JavaScript 中。

最佳答案

除了其他任何事情之外,你还让自己变得可疑XSS attacks :

假设 url参数(外部站点可以通过提供指向您站点的链接轻松欺骗该参数)包含字符串 "><b>BOLD!</b><div class=" 。突然间,您的页面会显示一些粗体文本,即使您从未使用过 <b>在您的网站中添加标签。这是最无害的示例,因为攻击者同样可以将任意 JavaScript 引入您的页面(包括窃取用户 cookie 的 JS!)。

这个故事的寓意:永远不要盲目相信用户输入,也不要简单地将其转换为 HTML。

要避免此类攻击(SQL Injection 是针对构建 SQL 语句的服务器端代码的非常类似的攻击),请执行以下两件事:

  1. 验证输入以确保它完全符合您的预期,如果不符合则不接受。在您的情况下,这意味着您需要确保 url参数实际上代表一个有效的URL。
  2. 仅以“安全”的方式使用用户数据,不会引入“重新解释”输入的可能性。在您的情况下,这意味着您不能使用这样的字符串连接来构建 HTML。请使用 document.createElement() 创建您的a元素,设置其 href属性设置为所需的值(如上所述进行清理),然后添加新创建的 a DOM 中适当位置的元素。

关于javascript - 如何在javascript中实现if?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com