【问题标题】:how to implement if in javascript?如果在javascript中如何实现?
【发布时间】:2011-10-27 23:05:05
【问题描述】:

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

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

它的问题在于,当它提取 url 时,&lt;a&gt; href 的值变成了 http://mysite.com/www.google.com,所以 if 应该说明原始 url http://mysite.com?url=www.google.com 前面是否没有 http:// ?url= 然后在href 值之后添加它以形成&lt;a href="http://www.google.com"&gt;url&lt;/a&gt;

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

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

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

【问题讨论】:

    标签: javascript url href src


    【解决方案1】:

    除了你让XSS attacks 怀疑的其他任何事情:

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

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

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

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

    【讨论】:

    • @Yusaf: 1.) 验证 输入以确保它完全 符合您的期望(即仅当它是正确的 URL 时才接受它) 2.) 不要像这样使用字符串连接,而是create an a element in JS,直接设置它的href 属性,然后将该元素插入到DOM中的适当位置。
    • 看来我需要回到绘图板上了 :(。谢谢。我只知道 HTML 和 CSS 以及少量的 javascript,正如你所知道的......
    • @Yusaf:构建安全的 Web 应用程序是一项艰巨但非常必要的技能。如果您花时间学习它,您获得奖励并拥有(不幸的是)太多人没有拥有的技能。
    • 顺便说一句,您是在说将链接作为类似 validator.w3.org/feed/… 的内容取自 perishablepress.com/press/2008/11/30/…
    • document.write(encodeURIComponent(urll)); 这会有帮助吗?
    【解决方案2】:

    您似乎需要https://developer.mozilla.org/en/JavaScript。 “if”是任何编程语言中最基本的元素,如果你不明白你真的需要通过一堆基础知识。

    【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2019-02-27
    • 2011-07-17
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多