URL参数安全吗?

<h1>带JWTS的防篡改URL参数</h1>
<blockquote>URL参数直接可以在请求中发送信息. 几十年前,我们已经使用它们来运输会话标识符,如今,许多应用程序仍将它们用于各种目的. 但是URL参数安全? 有什么选择? 继续阅读以了解更多. 2020年4月14日API安全API,JWT,加密货币</blockquote>
<h2>HTTPS简介</h2>
<p>以下是有关HTTPS的一些常见问题和答案.</p>
<p>有关深入的介绍(无需技术背景),请查看DigitalGov大学演示文稿, <strong>&ldquo; HTTPS的介绍&rdquo;</strong>, 了解HTTP是什么以及如何保护Web服务和用户.</p>
<ul>
<li>HTTPS做什么?</li>
<li>HTTPS保护哪些信息?</li>
<li>https有哪些信息 <em>不是</em> 保护?</li>
<li>HTTP与HTTP/2有何关系?</li>
<li>迁移到HTTP的如何影响搜索引擎优化(SEO)?</li>
<li>HTTPS网站如何继续向链接的HTTP站点发送推荐信息?</li>
<li>攻击HTTPS连接有多困难?</li>
<li>为什么今天的https未加密域名?</li>
<li>为什么DNSSEC不够好?</li>
<li>HTTPS如何防止DNS欺骗?</li>
</ul>
<h3>HTTPS做什么?</h3>
<p>正确配置后,HTTPS连接保证了三件事:</p>
<ul>
<li><strong>保密.</strong> 访客的连接是加密的,遮盖了URL,饼干和其他敏感的元数据.</li>
<li><strong>真实性.</strong> 访客正在与&ldquo;真实&rdquo;网站交谈,而不是与模仿者或中间人交谈.</li>
<li><strong>正直.</strong> 访问者和网站之间发送的数据尚未篡改或修改.</li>
</ul>
<p>可以轻松监视,修改和模拟平原的HTTP连接.</p>
<h3>HTTPS保护哪些信息?</h3>
<p>HTTPS几乎加密客户端和Web服务之间的所有信息.</p>
<p>例如, <strong>未加密的http</strong> 请求不仅揭示请求的主体,还揭示有关客户和请求的完整URL,查询字符串和各种HTTP标头:</p>
<p><img src=”https://https.cio.gov/faq/http-headers.png” /></p>
<p>一个 <strong>加密的https</strong> 请求保护大多数事情:</p>
<p><img src=”https://https.cio.gov/faq/https-headers.png” /></p>
<p>所有HTTP方法都相同(获取,发布,看等等.). URL路径和查询字符串参数是加密的,邮政正文也是如此.</p>
<h3>https有哪些信息 <em>不是</em> 保护?</h3>
<p>虽然HTTP对整个HTTP请求和响应进行加密,但DNS分辨率和连接设置可以揭示其他信息,例如完整域或子域以及原始IP地址,如上所述.</p>
<p>此外,攻击者仍然可以分析&ldquo;侧渠道&rdquo;信息的加密HTTPS流量. 这可以包括在网站上花费的时间或用户输入的相对大小.</p>
<h3>HTTP与HTTP/2有何关系?</h3>
<p>HTTP/2(2015年最终确定)是对HTTP/1的向后兼容更新.1(1999年最终确定)已针对现代网络进行了优化.</p>
<p>HTTP/2包含许多可以大大加快网站性能的功能,并从2009年与SPDY展示的Google的进步中脱颖而出.</p>
<p>虽然HTTP/2不需要在其正式规格中使用加密,但是每个实施HTTP/2的主要浏览器仅对加密连接实现了支持,并且没有任何主要浏览器在未加入的连接上为HTTP/2提供支持.</p>
<p>这意味着在实践中, <strong>HTTP/2的主要性能优势首先需要使用HTTP.</strong></p>
<p>了解更多信息:</p>
<ul>
<li>HTTP/2工作组常见问题</li>
<li>RFC 7540,最终规格</li>
<li>HTTP/2实施状态,由马克·诺丁汉(Mark Nottingham)(工作组主席)</li>
</ul>
<h3>迁移到HTTP的如何影响搜索引擎优化(SEO)?</h3>
<p>通常,迁移到HTTPS可以改善网站自己的SEO和分析.</p>
<ul>
<li>截至2014年8月,Google使用HTTP作为排名信号,可以提高搜索排名.</li>
<li>迁移到HTTPS将改善有关从HTTPS网站引用的Web流量的分析,因为推荐人信息未从HTTPS网站传递给HTTP网站.</li>
</ul>
<p>使迁移尽可能顺利,避免受到SEO的命中:</p>
<ul>
<li>用一个 <strong>适当的301重定向</strong> 将用户从http://重定向到https:// . <strong>请勿使用302重定向</strong>, 因为这可能会对搜索排名产生负面影响.</li>
<li>使用Canonical Link Element()通知搜索引擎,网站的&ldquo;规范&rdquo; URL使用https:// .</li>
</ul>
<h3>HTTPS网站如何继续向链接的HTTP站点发送推荐信息?</h3>
<p>默认情况下,当用户在HTTPS网站上并单击链接到HTTP网站时,浏览器不会将推荐人标头发送到HTTP网站. 这是在HTTP 1中定义的.1规格,旨在避免暴露HTTPS URL,否则该URL将由HTTPS的保证受到保护.</p>
<p>但是,这意味着,如果网站迁移到HTTPS,它链接到的任何HTTP网站都会停止从HTTPS网站查看推荐人数据. 这可能是一种抑制迁移到HTTPS的抑制作用,因为它剥夺了分析数据的链接HTTP网站,这意味着HTTPS网站将流量转介到链接的网站上不会获得&ldquo;信用&rdquo;.</p>
<p>希望继续向链接的HTTP网站发送出站推荐信息信息的网站所有者可以使用 <strong>推荐人政策</strong> 覆盖浏览器默认行为,同时保留HTTPS URL的隐私.</p>
<p>为此,网站 <strong>应该使用</strong> 当时杂交政策的起源. 这将允许支持浏览器发送 <strong>只有起源</strong> 作为推荐人标头. 即使两个站点都使用https,此限制的推荐信息也适用.</p>
<p>例如,如果用户在https:// agency上.政府/帮助/艾滋病.html并单击链接到https:// moreformation.com,如果设置了欧洲杂交素,则浏览器将提出http请求到https:// moreformation.com与https://代理的推荐人头.政府 .</p>
<p>制定此策略的最简单方法是在HTTPS网站的主体中包括一个标签:</p>
<pre><code data-lang=”html”><span > <span >名称=</span><span >&ldquo;推荐人&rdquo;</span> <span >值=</span><span >&ldquo;起源于杂交时&rdquo;</span> <span >/></span> </code></pre>
<p>推荐人policy HTTP标头也可以用作替代交付机制,但这在Web浏览器中并未得到广泛支持(截至2016年底).</p>
<p>网站 <strong>不应该使用</strong> 不安全的URL政策,因为这将导致HTTPS URL在HTTP连接上暴露在电线上,该连接击败了HTTPS的重要隐私和安全保证之一.</p>
<h3>攻击HTTPS连接有多困难?</h3>
<p>对HTTPS连接的攻击通常分为三类:</p>
<ul>
<li>通过密码分析或其他方案弱点损害HTTPS连接的质量.</li>
<li>损害客户端计算机,例如通过在系统中安装恶意根证书或浏览器信任存储.</li>
<li>通常通过操纵或损害证书授权,获得主要浏览器信任的&ldquo;流氓&rdquo;证书.</li>
</ul>
<p>这些都是可能的,但是对于大多数攻击者而言,它们非常困难,需要大量费用. 重要的是,他们都是 <em>目标</em> 攻击,对于任何连接到任何网站的用户都无法执行.</p>
<p>相比之下,涉及网络连接的任何人都可以轻松拦截和修改平原的HTTP连接,因此可以大规模进行攻击,低成本进行.</p>
<h2>为什么今天的https未加密域名?</h2>
<p>这主要是为了支持 <strong>服务器名称指示</strong> (SNI),一个TLS扩展名,允许从一个IP地址通过HTTP提供多个主机名.</p>
<p>SNI扩展是在2003年引入的,以允许HTTPS部署更容易,廉价地扩展扩展,但这确实意味着主机名是由浏览器发送给服务器&ldquo;清晰&rdquo;的服务器,以便接收IP地址知道要向​​客户端介绍哪个证书.</p>
<p>当域或子域本身揭示敏感信息时(e.G. ‘避孕.foo.Gov&rdquo;或&ldquo;自杀助手.foo.gov&rsquo;),这可以向被动窃听者揭示信息.</p>
<p>从网络隐私的角度来看,DNS在当今网络中的清除中也&ldquo;泄漏&rdquo;主机名(即使使用DNSSEC). 网络标准社区正在进行持续的努力来加密SNI主机名和DNS查找,但是截至2015年底,没有任何部署来支持这些目标.</p>
<p>大多数客户今天支持SNI,并鼓励现场所有者评估需要SNI支持的可行性,以节省金钱和资源. 但是,无论是否需要SNI支持才能访问特定网站,网站的所有者都应将其主机名视为未经HTTP的封闭式,并在提供域名和子域时对此进行说明.</p>
<h3>为什么DNSSEC不够好?</h3>
<p>DNSSEC试图保证解决域名以纠正IP地址.</p>
<p>但是,DNS分辨率只是在互联网上安全通信的一个方面. DNSSEC不能完全确保一个域:</p>
<ul>
<li>DNS分辨率完成后,DNSSEC将无法确保客户端和目标IP之间通信的机密性或完整性.</li>
<li>当DNSSEC验证失败时,没有主要的网络浏览器通知用户,从而限制了其强度和可执行性.</li>
</ul>
<p>HTTP保证客户端和服务器之间通信的机密性和完整性,Web浏览器具有严格而不断发展的HTTPS执法策略.</p>
<h3>HTTPS如何防止DNS欺骗?</h3>
<p>实际上,即使没有DNSSEC支持,HTTP也可以保护与域的沟通.</p>
<p>有效的HTTPS证书表明,该服务器在签发时已向受信任的证书当局展示了对域的所有权.</p>
<p>为了确保攻击者不能使用DNS欺骗将用户引导到可以截获流量的普通连接,网站可以使用HTTP严格的运输安全性(HST)来指示浏览器要求浏览器完全需要HTTPS连接其域名时代.</p>
<p>这意味着成功欺骗DNS分辨率的攻击者还必须创建有效的HTTPS连接. 这使得DNS欺骗变得充满挑战和昂贵,就像攻击HTTP一样.</p>
<p>如果攻击者欺骗DNS但没有损害HTTPS,则用户将收到其浏览器的明显警告消息,这将阻止他们访问可能是恶意网站. 如果该网站使用HST,则访问者将没有任何选择,并单击警告.</p>
<p>HTTP和HST共同努力保护域免受DNS的欺骗.</p>
<h2>带JWTS的防篡改URL参数</h2>
<p>URL参数直接可以在请求中发送信息. 几十年前,我们已经使用它们来运输会话标识符,如今,许多应用程序仍将它们用于各种目的. 但是URL参数安全? 有什么选择? 继续阅读以了解更多. 2020年4月14日API安全API,JWT,加密货币</p>
<h2>URL参数的现实</h2>
<p>在一个应用套房的世界中,Oauth 2.0和OpenID连接,到处都有URL参数. 在我的咨询工作和安全评估中,我经常遇到门户或网关应用程序,这些应用程序可以访问一套微型应用程序. 在这种情况下,用户可以从门户应用程序中启动一个应用程序之一. 这样做通常需要将一些上下文信息从门户转移到客户端应用程序. 多租户设置中的一个示例将是租户的标识符. 当门户网站启动客户端时,它要么在浏览器中导航当前上下文,要么打开一个新的浏览器选项卡. 在该过渡期间,在两个应用程序之间共享数据的方法不多. 最直接的机制是将必要的数据直接嵌入客户端应用程序的URL中. URL的查询参数用于跟踪键/值对,其中包含引导客户端应用程序所需的一切. 看着Oauth 2时.0和openID连接流,发生相同的模式. 当流量从客户端应用程序转移到授权服务器或身份提供商时,将使用URL参数传输信息. 当流量返回时,使用相同的模式. 不幸的是,这种模式极大地影响了要运输的数据的安全性. URL参数存在于浏览器发送的URL中,因此它们经常泄漏到第三方. 此外,攻击者可以轻松地操纵URL中的值. 最后,攻击者通常会成功欺骗用户复制和粘贴包含敏感参数的URL. 所以你怎么能防止这种情况发生?</p>
<h2>通过默默无闻的安全</h2>
<p>URL参数已经存在了很长时间. 他们的悠久历史告诉我们,他们很容易篡改. 攻击者可以启动用URL参数任意值的请求. 作为开发人员,您几乎无能为力防止这些参数篡改. 避开问题的典型模式是使用随机或不可预测的标识符. 该应用程序不包括客户的名称或ID,而是将随机生成的值(例如GUID)嵌入URL中. 这样做并不能阻止篡改,但几乎不可能成功猜测参数的其他有效值.</p>
带有GUID标识符的URL,仅对应用程序有意义
<pre> <code >https://管理.雷神.com ?房客= D8CF3FA3-01A3-4C96-8502-A7051BFDC0A8和餐厅= 5E4FD699-D6B8-4CD8-B1BE-E5F0428C0918</code> </pre>
<p>使用随机标识符会使参数更加困难,但不能解决问题的根源. 攻击者仍然可以篡改参数。找到合适的价值变得更具挑战性.</p>
<h2>防篡改参数</h2>
<p>随机标识符的使用对应于依靠模糊性来安全性. 更好的方法是保证URL参数的完整性. 这样,攻击者的任何篡改都可以检测到消耗URL参数的应用程序. 如今,提供一组密钥/值对的最简单方法是使用JSON Web令牌(JWT). JWT提供了一种交换双方之间的索赔安全性的方法. 在引擎盖下,JWT包含JSON数据结构,受签名保护. 下面示例中的URL使用JWT将信息从一个应用程序传输到另一个应用程序.</p>
带有JWT中的租户和餐厅参数的URL.
<pre> <code >https://管理.雷神.com ?params = eyjhbgciijsuzi1niisinr5cci6ikpxvcj9. EYJ0ZW5HBNQIOIJUAGUGQNVYZ2VYIEDYB3VWIIWICMVZD GF1CMFUDCI6IKJ1CMDLCIBNYXN0ZXIIFQ.Sprs3Zx8GaF XbxJBenxKx6CEFPaUqsYq2xzR15ru1gKsOpH-0azGjiH- TZV-OdCyUFiEk-CKQbjb6_HbhuaySKn_YOuVu7jXcIGTk fkz4MWb6_TviND8TrKbPY3qjtOvi3bUvQ8hjPQEAJGhx- U7UZX6q98yZ6PJD34YgMkzkFYiobkcsTq9M7N6GM8kWVy iatP4tOsqOcn3rbFPbf_GBr8HpnGwh6jhPKAZEh8HTywA ZTfytgLoApQ6hUsGdDGKsKsUMo6mFqoVTLAdchU-Tw7Y7 nDfmq9TsSc7lZroxnIqv-S0sZ​​iVT-7tVUemTzmxoTL-ep 3iFDoTrNJehQK0uA</code> </pre>
<p>JWT看起来像一堆胡说八道,但是数据的基本64代表. 用JWT解码JWT.IO显示JWT的实际内容.</p>
来自URL的JWT,有效载荷解码为JSON对象.
<p>如您所见,JWT的有效载荷现在包含我们希望交换的参数. 除了数据外,JWT还包含一个带有元数据的标头和一个保证数据完整性的签名,该数据未在解码版本中显示.</p>
<h4>此API安全课程将使您震惊!</h4>
了解常见攻击和当前构建安全API的最佳实践更多信息
<h2>使用JWTS的优缺点</h2>
<p>使用JWT传输敏感URL参数具有几个优点,但也有一些缺点. 让我们仔细看看这在实践中的含义. 第一个优势是数据的完整性保护. JWT中的签名确保接收器可以检测到数据未经授权的修改. 第二个优点是JWT的可扩展性. 如果特定的应用程序需要传输其他参数,则可以将其添加为JWT的新主张. 这些新主张会自动保护,这防止敏感参数变得容易受到篡改. 使用JWT的缺点是URL尺寸增加. JWT比简单的URL参数多一些详细. 但是,大小的增加是有限的和固定的. 由于JWT的有效载荷对应于URL参数,因此唯一的添加是标题和签名. 在这种特定情况下,使用JWT的大小增加约为374个字节.</p>
<h2>技术细节</h2>
<ul>
<li>使用ISS索赔确定生成JWT的应用程序(e.G., https:// sts.雷神.com)</li>
<li>使用AUD索赔来识别JWT的预期接收者(E.G., https://管理.雷神.com)</li>
<li>使用IAT主张跟踪JWT的创建时间. 这样做可以使接收器拒绝太旧的JWT.</li>
</ul>
<p>最后,JWT库还提供了加密JWT内容的支持. 使用加密的JWT不仅提供完整性保护,还提供机密性.</p>
<h2>免责声明</h2>
<p>编辑以清楚地说明签名参数的局限性(2020年4月25日,根据Neil Madden的反馈)</p>
<p>请注意,本文仅讨论如何更好地保护静态请求参数. 仅签署请求数据仍然使数据容易受到重播攻击. 该具体概述应证明使用JWT在URL中传输数据的好处:</p>
<ul>
<li>未签名的URL参数很容易篡改. 攻击者可以轻松地开始寻找有效的值.</li>
<li>签名的URL参数,例如在JWT中,使蛮力强迫不可能. JWT中的所有参数都绑在一起,无法在未检测到的情况下更改.</li>
<li>没有重播保护的JWT仍然可以重播. 如果攻击者在请求1中观察JWT中的请求参数,则没有任何阻止他们在请求2中使用这些参数.</li>
</ul>
<p>这些安全属性足以满足本文讨论的用例. 但是,对于涉及时间限制和交易的场景,它们不足.</p>
<h2>概括</h2>
<p>不幸的是,URL参数对于在不同应用程序之间传递数据至关重要. 一个例子用例是Oauth 2.0和OpenID连接. 另一个示例是应用程序套件,可通过门户访问. 普通URL参数的替代方法是使用JWT. 可以签署和加密JWT,提供完整性保护和机密性.</p>
<p>Oauth 2.0肯定是在提供基于JWT的签名请求对象作为URL参数的替代方案方面的前进. 您应该考虑相同的应用程序.</p>
<p>最后,请注意,确保URL参数的完整性始终是可能的. 但是,在JWT的主流采用之前,实施这种机制需要大量的发展努力. 今天,由于对JWT的无所不知的支持,情况不再如此.</p>
<h4>此API安全课程将使您震惊!</h4>
<p>了解常见攻击和当前建立安全API的最佳实践</p>
<h2>HTTPS(HTTP + SSL)中的Querystring参数是否安全? [复制]</h2>
<p>是的. Querystring还用SSL加密. 尽管如此,正如本文所示,将敏感信息放在URL中不是一个好主意. 例如:</p>
<blockquote><p>URL存储在Web服务器日志中 – 通常每个请求的整个URL存储在服务器日志中. 这意味着URL中的任何敏感数据(E.G. 密码)正在保存在服务器上的清晰文本中</p> </blockquote>
回答2010年4月13日11:52
Joe Ratzer Joe Ratzer
18k 3 3金徽章36 36银徽章51 51青铜徽章
<p>因此,这确实意味着,当Digitalocean,Google或其他人要求您将API密钥放入查询参数时,任何可以读取的日志访问的人都可以伪造您的ID? 说如果有人在loggly泄漏任何信息,许多服务将受到损害?</p>
2014年1月26日15:53
<p>API密钥是一个短暂的令牌,通常有效期为一个小时或一个月(对于OAuth和类似服务) – 但是,如果违反了这种范围,它们只会使所有出色的令牌无效. 每个人都必须使用(大概)仍然安全的密码重新认证.</p>
2014年3月2日,19:56
如果数据可容纳,将敏感数据放置并不是一个问题(e.G. 一次令牌)
2017年7月20日,13:57
@matthieucharbonnier这是一个大胆的声明. 你能给我30分钟的银行访问吗?
2018年2月17日,0:50
<p>@eralpb不,我想你误解了我的陈述. 但是我可以为您提供我已经使用过的确认代码,现在已经过时且无用.</p>
2018年2月18日,8:33
<p>请记住,SSL/TLS在运输层运行,因此所有加密goo都发生在应用程序层HTTP中.</p>
<p>这是说:&ldquo;是的!&ldquo;</p>
回答2010年4月14日1:17
迈克尔·霍华德·莫斯克
3,202 2 2金徽章16 16银徽章11 11青铜徽章
<p>整个传输,包括查询字符串,整个URL,甚至是请求类型(获取,发布等).使用https时会加密.</p>
回答2010年4月13日11:54
Marcelo Cantos Marcelo Cantos
180K 38 38金徽章325 325银徽章364 364青铜徽章
<p><b>小心!</b> 即使整个URL加密,也可以在加密传输之前的初始SSL握手中看到主机名!</p>
2017年7月20日,14:05
@matthieucharbonnier也适用于邮局和标头?
2020年3月12日,14:31
<p>@必须.Tek我知道这是一个较晚的答复,但是对于任何人稍后阅读的人,否,邮政和标题已完全加密,在最初的SSL/TLS握手中无法看到它们. 这就是为什么通常通过授权作为标题(持有人令牌等)传递的原因.)在HTTPS连接中.</p>
2022年8月9日,8:55
<p>我不同意此处给出的建议 – 即使是公认答案的参考总结:</p>
<blockquote><p>您当然可以使用https使用查询字符串参数,但不要将它们用于任何可能出现安全问题的东西. 例如,您可以安全地将它们用于身份零件号或类型的显示,例如&ldquo;帐户浏览&rdquo;或&ldquo;打印页&rdquo;,但不要将它们用于密码,信用卡号或其他不应公开可用的信息.</p> </blockquote>
<p>所以,不,他们并不是真的安全.</p>
<h2>URL参数的初学者指南</h2>
<p>尽管它们是经验丰富的SEO专业人员手中的宝贵资产,但查询字符串通常会给您的网站排名带来严重的挑战.</p>
<p>在本指南中,我们将分享使用URL参数时要注意的最常见的SEO问题.</p>
<ul>
<li>什么是URL参数?</li>
<li>如何使用URL参数(示例)<ul>
<li>URL参数如何工作?</li>
<li>URL查询字符串示例</li>
<li>网址何时成为SEO问题?</li>
</ul><ul>
<li>检查您的爬行预算</li>
<li>一致的内部链接</li>
<li>规范化一个URL的一个版本</li>
<li>通过禁忌阻止爬行者</li>
<li>将URL参数移至静态URL</li>
</ul>
<h2>什么是URL参数?</h2>
<p>URL参数(也称为&ldquo;查询字符串&rdquo;或&ldquo; URL查询参数&rdquo;)是插入URL中的元素.</p>
<p>要识别URL参数,请参考问号之后的URL部分(?). URL参数是由键和值制成的,由相等的符号(=)隔开. 然后将多个参数分别由ampersand(&)隔开.</p>
<p>带有参数的URL字符串看起来像这样:</p>
<p><img src=”https://static.semrush.com/blog/uploads/media/5a/20/5a20dd9a3859e973f5a378a1d6f96a9f/Graphic%201.png” alt=”img-sblog” /></p>
<p><img src=”https://static.semrush.com/blog/uploads/media/00/6e/006eebc38b54220916caecfc80fed202/Guide-to-URL-Parameters-2.png” alt=”img-sblog” /></p>
<p><em>键1:第一个变量名称 <br />键2:第二个变量名称<br />值1:第一个属性值<br />Value2:第二属性值<br />? :查询字符串开始<br />=:值分离器<br />&:参数分离器</em></p>
<h2>如何使用URL参数(示例)</h2>
<p>URL参数通常用于对页面上的内容进行排序,从而使用户更容易在在线商店中浏览产品. 这些查询字符串允许用户根据特定过滤器订购页面,并仅查看每页一定的项目.</p>
<p><img src=”https://static.semrush.com/blog/uploads/media/72/03/720393045a9493d1159c2fd135f98399/Guide-to-URL-Parameters-3.png” alt=”img-sblog” /></p>
<p>跟踪参数的查询字符串同样常见. 数字营销人员通常使用它们来监视流量的来源,因此他们可以跟踪其社交策略,广告活动或新闻通讯.</p>
<h3>URL参数如何工作?</h3>
<p>根据Google开发人员的说法,有两种类型的URL参数:</p>
<p>1. <strong>内容修改参数</strong> (活动):将修改页面上显示的内容的参数</p>
<ul>
<li>e.G. 直接将用户发送到称为&ldquo; xyz&rdquo;的特定产品</li>
</ul>
<p>2. <strong>跟踪参数</strong> (被动)用于高级跟踪:将传递信息的参数 – 我.e. 它来自哪个网络,哪个活动或广告小组等. – 但不会更改页面上的内容.</p>
<ul>
<li>e.G. 跟踪新闻通讯的流量</li>
</ul>
<ul>
<li>e.G. 使用自定义URL收集广告系列数据</li>
</ul>
<p>它似乎很简单,但是有一种使用URL参数的正确和不正确的方法,我们将在一些示例之后不久讨论.</p>
<h3>URL查询字符串示例</h3>
<p>URL参数的常见用途包括:</p>
<p><img src=”https://static.semrush.com/blog/uploads/media/f9/a7/f9a7dc7d37ffdbed1ab4634b11a8ae72/Guide-to-URL-Parameters-4.png” alt=”img-sblog” width=”1010″ height=”1143″ /></p>
<h2>网址何时成为SEO问题?</h2>
<p>大多数对URL构造的SEO友好建议都表明,尽可能远离URL参数. 这是因为可能是有用的URL参数,它们往往会减慢网络爬网的速度.</p>
<p>结构不良的被动URL参数不更改页面上的内容可以创建无唯一内容的无尽URL.</p>
<p>由URL参数引起的最常见的SEO问题是:</p>
<p>1. <strong>重复的束缚</strong>t:由于搜索引擎将每个URL视为独立页面,因此可以将URL参数创建的同一页面的多个版本视为重复的内容. 这是因为根据URL参数重新排序的页面通常与原始页面非常相似,而某些参数可能会返回与原始内容完全相同的内容.</p>
<p>2. <strong>爬行预算损失</strong>:保持简单的URL结构是URL优化基础知识的一部分. 具有多个参数的复杂URL创建了许多不同的URL,这些URL指向相同(或相似)内容. 根据Google开发人员的说法,爬行者可能会决定避免&ldquo;浪费&rdquo;带宽索引网站上的所有内容,将其标记为低质量,然后转到下一个内容.</p>
<p>3. <strong>关键字蚕食</strong>:原始URL目标的过滤版本相同的关键字组. 这导致各种页面争夺相同的排名.</p>
<p>4. <strong>稀释的排名信号</strong>:由于多个URL指向相同的内容,链接和社交分享可能指向页面的任何参数化版本. 这可能会进一步混淆爬行者,他们不了解哪个竞争页面应在搜索查询中排名.</p>
<p>5. <strong>URL的可读性差</strong>:优化URL结构时,我们希望URL直接且易于理解. 一系列的代码和数字几乎不适合账单. 对于用户而言,参数化的URL几乎不可读. 当在SERP或新闻通讯或社交媒体上显示时,参数化的URL看起来像是垃圾邮件和不信任,从而使用户单击并共享页面的可能性较小.</p>
<h2>如何管理良好SEO的URL参数</h2>
<p>上述SEO问题的大多数指向一个主要原因:爬行和索引所有参数化的URL. 但值得庆幸的是,网站管理员通过参数无限地创建新URL并不是无能为力的.</p>
<p>在良好的URL参数处理的核心,我们找到了正确的标签.</p>
<p><strong>请注意</strong>:当包含参数的URL显示重复,非唯一内容时,就会出现SEO问题.e. 被动URL参数生成的. 这些链接(只有这些链接)不应被索引.</p>
<h3>检查您的爬行预算</h3>
<p>您的爬网预算是在转到下一个页面之前将在您的网站上爬网的页面数量. 每个网站都有不同的爬网预算,您应该始终确保您的预算不会浪费.</p>
<p>不幸的是,拥有许多可捕获的低价值URL(例如由刻面导航创建的参数化URL)是浪费爬网预算.</p>
<h3>一致的内部链接</h3>
<p>如果您的网站有许多基于参数的URL,则重要的是向爬网信发出信号,而哪个页面不索引并始终链接到静态,非参数化页面.</p>
<p>例如,以下是在线鞋店的一些参数化URL:</p>
<p><img src=”https://static.semrush.com/blog/uploads/media/49/73/4973ce37e15036c76b049e54ae7be69c/Guide-to-URL-Parameters-5.png” alt=”img-sblog” /></p>
<p>在这种情况下,请小心,始终如一,仅链接到静态页面,而永远不要与使用参数的版本. 通过这种方式,您将避免向索引哪个版本索引的引擎发送不一致的信号.</p>
<h3>规范化一个URL的一个版本</h3>
<p>一旦确定应该索引哪个静态页面,请记住将其化. 在参数化的URL上设置规范标签,引用首选URL.</p>
<p>如果您创建参数以帮助用户浏览鞋子的在线商店登陆页面,则所有URL变化都应包括标识主登录页面作为规范页面的规范标签. 因此,例如:</p>
<p><img src=”https://static.semrush.com/blog/uploads/media/a5/12/a5128015e24ff0db94c8b17a7a385a63/Graphic%207_1.png” alt=”img-sblog” /></p>
<p><ul>
<li><em>/鞋子/女人鞋/</em></li>
<li><em>/鞋子/女人鞋?颜色=蓝色</em></li>
<li><em>/鞋子/女人鞋?类型=高跟鞋</em></li>
</ul>
</p>
<p>在这种情况下,上面的三个URL与非参数妇女鞋着陆页&ldquo;相关&rdquo;. 这将向爬行者发送信号,即只有主要着陆页是索引而不是参数化的URL.</p>
<h3>通过禁忌阻止爬行者</h3>
<p>旨在排序和过滤的URL参数可能会创建具有非唯一内容的无尽URL. 您可以选择通过使用disallow标签来阻止爬虫访问网站的这些部分.</p>
<p>从爬网(Googlebot)等爬网(Googlebot)等参数化的重复内容中阻止爬行者意味着控制他们可以通过机器人访问的内容.TXT. 机器人.txt文件是在爬网站之前通过机器人检查的,因此在优化您的参数化URL时可以开始.</p>
<p>以下机器人.TXT文件将禁止任何具有问号的URL:</p>
<p>此禁止标签将阻止所有URL参数被搜索引擎爬行. 在选择此选项之前,请确保您的URL结构中没有其他部分使用参数,否则也将被阻止.</p>
<p>您可能需要自己进行爬行以找到所有包含问号的URL(?).</p>
<h3>将URL参数移至静态URL</h3>
<p>这属于有关动态与静态URL的更广泛讨论. 重写动态页面作为静态页面改善网站的URL结构.</p>
<p>但是,尤其是如果当前索引参数化的URL,您不仅应该花时间重写URL,还应将这些页面重定向到其相应的新静态位置.</p>
<p>Google开发人员还建议:</p>
<ul>
<li>删除不必要的参数,但要维护一个动态的URL</li>
<li>创建等同于原始动态内容的静态内容</li>
<li>将动态/静态重写限制为那些将帮助您删除不必要参数的人.</li>
</ul>
<h2>使用Semrush的URL参数工具</h2>
<p>正如现在必须清楚的那样,处理URL参数是一项复杂的任务,您可能需要一些帮助. 使用Semrush设置站点审核时,您可以通过所有URL参数识别以避免爬行来节省自己的头痛.</p>
<p>在网站审核工具设置中,您会找到一个专用步骤(删除URL参数),您可以在爬网期间列出要忽略的参数URL(UTMS,PAGE,语言等.)</p>
<p>这很有用,因为,正如我们之前提到的,并非所有参数化的URL都需要爬行和索引. 内容修改参数通常不会引起重复的内容和其他SEO问题,因此将其索引会为您的网站增加价值.</p>
<p>如果您已经在Semrush中设置了一个项目,则仍然可以通过单击Gear Icon来更改URL参数设置.</p>
<h2>将URL参数纳入您的SEO策略</h2>
<p>参数化的URL使修改或跟踪内容变得更容易,因此需要在需要时将它们合并. 您需要让Web爬虫知道何时以及何时不用参数索引特定的URL,并突出显示页面的版本,这是最有价值的.</p>
<p>花点时间确定不应索引哪些参数化的URL. 随着时间的流逝,Web爬虫将更好地了解如何导航和重视您网站的页面.</p>