url 订阅
统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。 展开全文
统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。
信息
外文名
uniform resource locator;URL
中文名
统一资源定位系统
统一资源定位系统基本介绍
因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语义。而这些字符串则被称为:“统一资源定位器”(URL)。这篇说明源于万维网全球信息主动组织(World Wide Web global informationinitiative)介绍的概念。RFC1630《通用资源标志符》描述了一些对象数据,他们自1990年起就开始使用这些对象数据。这篇URL说明符合《因特网资源定位符的功能需求(Functional Requirements for Internet Resource Locators)》中说明的需求。这篇文档是由工程任务组织(IETF)的URI工作小组写的 [1]  。
收起全文
精华内容
下载资源
问答
  • URL和URI(一)URL

    千次阅读 2018-09-27 15:47:24
    URL类 public URL(String url) throws MalformedURLException public URL(String protocol, String host, int port, String file) throws MalformedURLException public URL(String protocol, String host, ...

    URL类

    public URL(String url) throws MalformedURLException
    public URL(String protocol, String host, int port, String file) throws MalformedURLException
    public URL(String protocol, String host, String file) throws MalformedURLException
    public URL(URL base,String relative) throws MalformedURLException
    

    使用哪个构造函数取决于你有哪些信息以及信息的形式;

    从字符串构造URL

    最简单的URL构造函数只接受一个字符串形式的绝对URL作为唯一的参数:

    public URL(String url) throws MalformedURLException在这里插入代码片
    

    例如:

    try {
    			URL url = new URL("http://www.baidu.com");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    由组成部分构造URL

    还可以通过指定协议、主机名和文件来构建一个URL:

    public URL(String protocol, String host, String file) throws MalformedURLException
    

    这个构造函数将端口设置为-1,所以会使用该协议的默认端口。file参数应当以斜线开头,包括路径、文件名和可选的片段标识符。有可能会忘记最前面的斜线,这是一个很常见的错误。与所有URL构造函数一样,它可能会抛出MalformedURLException异常。

        try {
    			URL url = new URL("http","www.eff.org","/blueribbon.html#intro");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    这会创建一个URL对象,指向http://www.eff.org/blueribbon.html#intro,并使用HTTP默认的端口(80)。
    在很少见的情况下,默认端口不正确时,还允许使用一个int显式指定端口:

       try {
    			URL url = new URL("http","www.eff.org","8000",/blueribbon.html#intro");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    构造相对URL

    这个构造函数根据相对URL和基础URL构建一个绝对URL:

    public URL(URL base,String relative) throws MalformedURLException
    

    在这里插入图片描述

       try {
    			URL url1 = new URL("http://www.ibiblio.org/javafaq.index.html");
    			URL url2 = new URL(url1, "mailinglists.html");
    		} catch (MalformedURLException e) {
    			System.out.println(e);
    		}
    

    从URL获取数据

    URL类有几个方法可以从URL获取数据:

    public final InputStream openStream() throws java.io.IOException
    public URLConnection openConnection() throws java.io.IOException
    public URLConnection openConnection(Proxy proxy) throws java.io.IOException
    public final Object getContent() throws java.io.IOException
    public final Object getContent(Class[] classes)throws java.io.IOException
    

    在这里插入图片描述

    public final InputStream openStream() throws java.io.IOException

    在这里插入图片描述

       try {
    			URL url1 = new URL("http://www.baidu.com");
    			InputStream stream = url1.openStream();
    			int c;
    			while((c = stream.read())!= -1)
    			{
    				System.out.write(c);
    			}
    		} catch (IOException e) {
    			System.out.println(e);
    		}
    

    控制台会输出源代码:
    在这里插入图片描述

    public URLConnection openConnection() throws java.io.IOException

    openConnection()方法为指定的URL打开一个socket,并返回一个URLConnection对象。URLConnection表示一个网络资源的打开的连接。如果调用失败,则openConnection()会抛出一个IOException异常;

      try {
    			URL url1 = new URL("http://www.baidu.com");
    			URLConnection uc = url1.openConnection();
    			InputStream stream = uc.getInputStream();
    			//从连接读取			
    		} catch (IOException e) {
    			System.out.println(e);
    		}
    

    在这里插入图片描述
    这个方法还有一个重载版本,可以指定通过哪个代理服务器传递连接:

    public URLConnection openConnection(Proxy proxy) throws java.io.IOException
    

    public final Object getContent() throws java.io.IOException

    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    Object object = url1.getContent();
    //将Object强制转换为适当的类型
    //处理这个Object
    

    在这里插入图片描述
    下载一个对象:

    URL url1 = new URL("http://www.baidu.com");
    Object object = url1.getContent();
    System.out.println(object.getClass().getName());
    

    在这里插入图片描述
    具体的类可能因为Java的版本不同而有所区别:
    在这里插入图片描述

    public final Object getContent(Class[] classes)throws java.io.IOException

    getContent()方法的这个重载版本允许你选择希望将内容作为哪个类返回。这个方法尝试以第一种可用的格式返回URL的内容:

                URL url1 = new URL("http://www.baidu.com");
    			Class<?>[] types = new Class[3];
    			types[0] = String.class;
    			types[1] = Reader.class;
    			types[2] = InputStream.class;
    			Object object = url1.getContent(types);
    

    如果内容处理器知道如何返回资源的一个字符串表示,它就会返回一个String。如果它不知道如何返回资源的字符串表示,则返回Reader。倘若它也不知道如何将资源表示为一个读取器,那么它将返回InputStream。必须用instanceof检查返回的对象的类型:

    在这里插入图片描述

    分解URL

    URL由以下5部分组成:

    • 模式,也称为协议
    • 授权机构
    • 路径
    • 片段标识符
    • 查询字符串

    在这里插入图片描述
    public String getProtocol()
    getProtocol()方法返回一个String,其中包含URL的模式(如"http"、“https"或"file”):

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getProtocol());    //输出http
    

    public String getHost()
    getHost()方法返回一个String,其中包含URL的主机名:

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getHost());   //输出www.baidu.com
    

    public int getPort()
    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getPort());   //输出-1
    

    public int getDefaultPort()
    在这里插入图片描述

    URL url1 = new URL("http://www.baidu.com");
    System.out.println(url1.getDefaultPort());   //输出80
    

    public String getFile()
    getFile()方法返回一个String。从主机名后的第一个斜线(/)一直到片段标识符#之前的字符,被认为是文件部分:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#");
    System.out.println(url1.getFile());   //输出/test.html?name=yd&sex=man
    

    public String getPath()
    与 getFile()相似,但它返回的String中不包含查询字符串:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#");
    System.out.println(url1.getPath());    //输出/test.html
    

    public String getRef()
    返回URL的片段标识符部分。如果URL没有片段标识符,则这个方法返回null:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getRef());   //输出34546
    

    public String getQuery()
    返回URL的查询字符串。如果URL没有查询字符串,则这个方法返回null:

    URL url1 = new URL("http://www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getQuery());   //输出name=yd&sex=man
    

    public String getUserInfo()
    返回URL的用户信息。如果URL没有用户信息,则这个方法返回null:

    URL url1 = new URL("http://admin@www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getUserInfo());   //输出admin
    

    public String getAuthority()
    getAuthority()方法会以URL中的形式返回授权机构,可能有用户信息和端口,也可能没有:

    URL url1 = new URL("http://admin@www.baidu.com/test.html?name=yd&sex=man#34546");
    System.out.println(url1.getAuthority());   //输出admin@www.baidu.com
    

    相等性和比较

    在这里插入图片描述
    在这里插入图片描述
    URL类还有一个sameFile()方法,可以检查两个URL是否指向相同的资源:

    public boolean sameFile(URL other)
    

    在这里插入图片描述

    比较

    URL有三个方法可以将一个实例转换为另外一种形式,分别是toString()、toExternalForm()和toURI()。
    在这里插入图片描述
    最好toURI()方法将URL对象转换为对应的URI对象:

     public URI toURI() throws URISyntaxException
    

    以上只是学习所做的笔记!!!
    书籍:Java网络编程

    展开全文
  • URL

    千次阅读 多人点赞 2020-06-07 22:15:04
    URL URL指的是统一资源定位符(Uniform Resource Locator)。 URL无非就是一个给定的独特资源在Web上的地址。理论上说,每个有效的URL都指向一个独特的资源。这个资源可以是一个HTML页面,一个CSS文档,一幅图像,...

    URL

       URL指的是统一资源定位符(Uniform Resource Locator)。
       URL无非就是一个给定的独特资源在Web上的地址。理论上说,每个有效的URL都指向一个独特的资源。这个资源可以是一个HTML页面,一个CSS文档,一幅图像,等等。而在实际中,有一些例外,最常见的情况就是URL指向了不存在的或是被移动过的资源。由于通过URL呈现的资源和URL本身由Web服务器处理,因此web服务器的拥有者需要认真地维护资源以及与它关联的URL。
       作为一个小白,看到这个高级的专业词汇时,我是懵的,经过各方面搜索后,终于有了一点点认识,不容易!!
       我浅显的把它理解为——网址(个人理解)
       示例:http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
       下面来分析一下它的几个部分:
       1、http:// ——HTTP协议(超文本转移协议),当然也可以是其他协议。
       2、www.baidu.com ——域名,表明在访问哪个服务器,当然也可以用IP地址代替。
       3、:80 —— 端口,用于访问Web服务器上的资源的技术“门”。
       4、/path/to/myfile.html —— 网络服务器上资源的路径。
       5、?key1=value1&key2=value2 —— 提供给网络服务器的额外参数。这些参数用&分隔开。
       6、#SomewhereInTheDocument —— 资源本身的另一部分的锚点,锚点像一个迅速定位器一样,可以在网页中设置标记,然后创建链接,创建的链接可以使我们迅速访问到指定位置(想到了书签~~)
    
    展开全文
  • URL重定向漏洞

    千次阅读 2019-09-06 00:37:41
    URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术 url转发和重定向区别 第一种是request.getRequestDispatcher().forward(request,...

    0X00:

    什么是url重定向?

    URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术

    url转发和重定向区别

    第一种是request.getRequestDispatcher().forward(request,response):

    1、属于转发,也是服务器跳转,也可以叫做内部重定向,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()。

    2、在前后两次执行后,地址栏不变,仍是当前文件的地址。

    3、不能转向到本web应用之外的页面和网站,所以转向的速度要快。

    4、URL中所包含的“/”表示应用程序(项目)的路径。

     

    第二种是response.sendRedirect():

    1、属于重定向,也是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求,前后页不共用一个request,不能读取转向前通过request.setAttribute()设置的属性值。

    2、在前后两次执行后,地址栏发生改变,是目标文件的地址。

    3、可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢。

    4、URL种所包含的"/"表示根目录的路径。

    url重定向漏洞

    为什么会产生url重定向漏洞?

        个人理解应当是外部重定向才会引发此漏洞,毕竟参数可控,是问题根源,

        1. 写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;

        2. 写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;

        3. 对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;

        4. 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;

        5. 原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致被绕过;

    url重定向漏洞危害是什么呢?

        网站接受用户输入的链接,跳转到一个攻击者控制的网站,可能导致跳转过去的用户被精心设置的钓鱼页面骗走自己的个人信息        和登录口令

    ssrf和url重定向区别?

        问过大佬,说了一句,除了模样长得一样其他什么都不一样

        个人理解:SSRF是服务器帮你去访问,url重定向其实也是服务器帮忙去访问,那么感觉SSRF可能能实现url重定向功能,也应该      可以用来钓鱼,区别的话可能SSRF能帮忙探测内网,而url重定向是访问外网

    0X01:

    以下均转自:https://landgrey.me/open-redirect-bypass/

    使用场景

    1. 用户登录、统一身份认证处,认证完后会跳转

    2. 用户分享、收藏内容过后,会跳转

    3. 跨站点认证、授权后,会跳转

    4. 站内点击其它网址链接时,会跳转

    常见参数名

    redirect
    redirect_to
    redirect_url
    url
    jump
    jump_to
    target
    to
    link
    linkto
    domain

    几种语句和框架版本常见的URL跳转代码如下,可用作白盒代码审计参考:

    Java:
    response.sendRedirect(request.getParameter("url"));
    PHP:
    $redirect_url = $_GET['url'];
    header("Location: " . $redirect_url);
    .NET:
    string redirect_url = request.QueryString["url"];
    Response.Redirect(redirect_url);
    Django:
    redirect_url = request.GET.get("url")
    HttpResponseRedirect(redirect_url)
    Flask:
    redirect_url = request.form['url']
    redirect(redirect_url)
    Rails:
    redirect_to params[:url]

    利用方法

    后面假设源域名为:www.landgrey.me 要跳转过去的域为:evil.com

    1. 直接跳转

    没做任何限制,参数后直接跟要跳转过去的网址就行:

    https://www.landgrey.me/redirect.php?url=http://www.evil.com/untrust.html

    2. 协议一致性

    当程序员校验跳转的网址协议必须为https时(有时候跳转不过去不会给提示):

    https://www.landgrey.me/redirect.php?url=https://www.evil.com/untrust.html

    3. 域名字符串检测欺骗

    01. 有的程序员会检测当前的域名字符串是否在要跳转过去的字符串中,是子字符串时才会跳转,php代码如:

    <?php
    $redirect_url = $_GET['url'];
    if(strstr($redirect_url,"www.landgrey.me") !== false){
        header("Location: " . $redirect_url);
    }
    else{
        die("Forbidden");
    }

    绕过:

    https://www.landgrey.me/redirect.php?url=http://www.landgrey.me.www.evil.com/untrust.html

    一个京东的实例:

     

    02. 还有的会检测域名结尾是不是当前域名,是的话才会跳转,Django示例代码如下:

    redirect_url = request.GET.get("url")
    if redirect_url.endswith('landgrey.me'):
        HttpResponseRedirect(redirect_url)
    else:
        HttpResponseRedirect("https://www.landgrey.me")

    绕过:

    https://www.landgrey.me/redirect.php?url=http://www.evil.com/www.landgrey.me

    或者买个xxxlandgrey.me域名,然后绕过:

    https://www.landgrey.me/redirect.php?url=http://xxxlandgrey.me

    03.可信站多次重定向绕过

    利用已知可重定向到自己域名的可信站点的重定向,来最终重定向自己控制的站点。

    一种是利用程序自己的公共白名单可信站点,如www.baidu.com,其中百度有个搜索的缓存链接比如https://www.baidu.com/linkurl=iMwwNDM6ahaxKkSFuOG,可以最终跳转到自己网站,然后测试时:

    https://www.landgrey.me/redirect.php?url=https://www.baidu.com/linkurl=iMwwNDM6ahaxKkSFuOG

    就可以跳转到自己站点了。

    另一种类似,但是程序的跳转白名单比较严格,只能是自己域的地址,这时需要有一个目标其它域的任意跳转漏洞,比如https://auth.landgrey.me/jump.do?url=evil.com,然后测试时:

    https://www.landgrey.me/redirect.php?url=https://auth.landgrey.me/jump.do?url=evil.com

    4. 畸形地址绕过

    这一部分由于各种语言、框架和代码实现的不同,防护任意跳转代码的多种多样;导致绕过方式乍看起来很诡异,有多诡异?举三个案例:

    案例一:这个案例 ,通过添加多余的"/"(%2F)符号,再对"."两次url编码成"%252E"绕过代码中对域名后".com"的切割, 构造类似

    https://landgrey.me/%2Fevil%252Ecom

    达到了任意URL跳转的目的。

    案例二:这个案例,通过添加4个"/"前缀和"/.."后缀,构造类似

    https://landgrey.me/redirect.php?url=www.evil.com/..

    进行了绕过。

    案例三:这个案例,通过"\."字符,构造类似

    https://landgrey.me/redirect.php?url=http://www.evil.com\.landgrey.me
    

    进行绕过。

    手工测试时,主要结合目标对输入的跳转处理和提示,根据经验来绕过;
    自动化测试时,通常是根据目标和规则,事先生成payload,用工具(如burpsuite)在漏洞点处自动发包测试;

    复杂的案例,在当时测试时一般有相关提示信息,不然就是自动化fuzzing出的,实际中手工bypass的难度和花费太大。

    URL跳转漏洞复杂的真实例子也比较难找。黑盒测试,经常是测试成功也不能确定到底是哪里出的问题。要达到绕过效果,主要涉及以下9个特殊字符:

    ";", "/", "\", "?", ":", "@", "=", "&", "."
    

    一个“协议型”的网址示例:

    http://user:pass@testweb.com/path/;help.php?q=abc#lastpage

    10种bypass方式:

    1. 单斜线"/"绕过
    https://www.landgrey.me/redirect.php?url=/www.evil.com
    2. 缺少协议绕过
    https://www.landgrey.me/redirect.php?url=//www.evil.com
    3. 多斜线"/"前缀绕过
    https://www.landgrey.me/redirect.php?url=///www.evil.com
    https://www.landgrey.me/redirect.php?url=www.evil.com
    4. 利用"@"符号绕过
    https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
    5. 利用反斜线"\"绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
    6. 利用"#"符号绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
    7. 利用"?"号绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
    8. 利用"\\"绕过
    https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
    9. 利用"."绕过
    https://www.landgrey.me/redirect.php?url=.evil           (可能会跳转到www.landgrey.me.evil域名)
    https://www.landgrey.me/redirect.php?url=.evil.com       (可能会跳转到evil.com域名)
    10.重复特殊字符绕过
    https://www.landgrey.me/redirect.php?url=///www.evil.com//..
    https://www.landgrey.me/redirect.php?url=www.evil.com//..

    上面的方法有些是有案例,有些是别人总结的,有些是有原理依循的,比如第4条,利用"@"符号前的"www.landgrey.me"是指"www.evil.com"域的一个用户名来绕过。

    5. 其它绕过思路

    1. 跳转到IP地址,而不是域名;
    2. 跳转到IPV6地址,而不是IPv4地址;
    3. 将要跳转到的IP地址用10进制、8进制、16进制形式表示;
    4. 更换协议,使用ftp、gopher协议等;
    5. 借鉴SSRF漏洞绕过的tricks;
    6. CRLF注入不能xss时,转向利用任意URL跳转漏洞;
    

     

    6. 自动化利用

    参考Github上已总结的测试payload(很杂,一些可能根本没有实例,完全是YY),按情况替换里面的域名。在黑盒情况下,可以用来批量发包测试。

    防护方法

    1. 代码固定跳转地址,不让用户控制变量
    2. 跳转目标地址采用白名单映射机制
       比如1代表auth.landgrey.me,2代表www.landgrey.me,其它不做任何动作
    3. 合理充分的校验校验跳转的目标地址,非己方地址时告知用户跳转风险

    参考链接:

    rfc1738

    rfc1808

    rfc3986

    Django的两个url跳转漏洞分析

    说下我是怎么绕过URL跳转限制的吧

    Open-Redirect-payloads

    利用URL特性绕过域名白名单检测

    谈谈parse_url

    open-redirect-bypass-story

    Unvalidated_Redirects_and_Forwards_Cheat_Sheet

    展开全文
  • 自己写的,可能有bug,请大家一块学习 环境为PB12 函数(及参数) 作用 arraysort 对一维数组进行排序 ...urldecode 将指定字符串以进行指定字符集url解码 urlencode 将指定字符串以进行指定字符集url编码 涨价了,哈哈
  • URL过滤技术

    万次阅读 2019-06-06 13:15:56
    URL过滤简介 URL过滤功能可以对用户访问的URL进行控制,允许或禁止用户访问某些网页资源,达到规范上网行为的目的。URL过滤还可以通过引用时间段或用户/组等配置项,实现针对不同时间段或不同用户/组的URL访问控制,...

    URL过滤简介

    URL过滤功能可以对用户访问的URL进行控制,允许或禁止用户访问某些网页资源,达到规范上网行为的目的。URL过滤还可以通过引用时间段或用户/组等配置项,实现针对不同时间段或不同用户/组的URL访问控制,达到更加精细化和准确化控制员工上网权限的需求。

    URL过滤功能只支持过滤HTTP或HTTPS协议的URL请求。需要过滤HTTPS协议的URL请求时,还需要配置URL过滤的加密流量过滤功能。

    URL过滤与DNS过滤的关系:

    除了URL过滤,DNS过滤也可以达到规范上网行为的目的。DNS过滤是对DNS请求报文中的域名进行过滤,允许或禁止用户访问某些网站。

    URL过滤与DNS过滤对比:

    对比项URL过滤DNS过滤
    控制访问阶段在发起HTTP/HTTPS的URL请求阶段进行控制在域名解析阶段进行控制
    控制粒度控制粒度细,可以控制到目录和文件级别控制粒度粗,只能控制到域名级别
    性能影响性能影响大性能影响小
    控制范围仅控制HTTP/HTTPS访问该域名对应的所有服务都可以控制

    URL过滤原理

    URL分类:

    • 预定义URL分类

      系统内置的,系统预先对大量常见的URL进行了分类。预定义URL分类不能创建、删除和重命名。

    • 自定义URL分类

      手工配置的,自定义URL分类的配置分为两种:

      • 创建一个自定义URL分类,并添加URL到该自定义URL分类中。
      • 向预定义URL分类中添加URL,该URL属于自定义URL分类。

      自定义URL分类优先级高于预定义URL分类。

    预定义URL分类查询:

    预定义URL分类的查询分为两种方式:预定义URL分类缓存和远程查询服务器。

    设备初次上电时,自动将URL分类预置库加载到预定义URL分类缓存里。当用户请求访问URL时,设备提取URL信息后,首先会在缓存中查询该URL对应的分类。如果查询到URL分类,则按照配置的响应动作进行处理。如果查询不到,则到远程查询服务器上继续查询,如果查询到URL对应的分类,则按照URL过滤配置文件中配置的响应动作进行处理,并将查询到的URL和其对应的分类信息保存到预定义URL分类缓存中,以便下次快速查询。

    内嵌白名单功能:

    一般大的网页都会内嵌其他的网页链接,如果只将主网页加入白名单,则该主网页下的内嵌网页部分将无法正常访问。因此新增了内嵌白名单功能。该功能将用户HTTP请求中的referer字段(标识用户从哪个网页跳转过来)去匹配白名单,如果匹配,用户就可以访问该网页。因此只要配置一个网页的白名单,用户就可以访问该网页下的内嵌网页,简化了配置。

    内嵌白名单功能有两种实现方式,具体如下:

    • 使用用户手工配置的referer-host与HTTP请求中的referer字段进行匹配,如果匹配则允许该URL请求。如果HTTP请求中的referer字段没有匹配配置的referer-host,用户还可以选择是否将referer字段去匹配所有配置的白名单规则。开启referer字段匹配白名单功能后,如果referer字段匹配白名单规则,则允许该URL请求。
    • 开启referer字段匹配白名单功能后,直接使用配置的白名单与HTTP请求中的referer字段进行匹配,如果匹配命中,则允许该URL请求。

    referer字段匹配白名单功能默认开启,用户也可以选择关闭该功能。

    URL信誉和恶意URL:

    • URL信誉:

      URL信誉反映了用户访问的URL是否值得信赖。开启URL信誉检测功能后,可以对低信誉的URL进行阻断。URL信誉值的查询分为两种方式:URL信誉热点库和远程查询服务器。

    • 恶意URL:

      恶意URL是指包含恶意信息的URL。开启恶意URL检测功能后,URL过滤功能利用这些恶意URL信息即可对后续流量进行阻断。

    URL匹配方式:

    在这里插入图片描述

    URL过滤方式:

    • 黑白名单
    • URL自定义分类
    • URL预定义分类
    • 远程分类服务器

    URL的控制动作:

    URL过滤的控制动作包括允许、告警和阻断,其严格程度依次增高。

    • 允许:指允许用户访问请求的URL。
    • 告警:指允许用户访问请求的URL,同时记录日志。
    • 阻断:指阻断用户访问请求的URL,同时记录日志。

    当URL属于多个分类时,响应动作将按照动作模式执行:

    • 严格模式:最终动作取所有命中分类中最严格的动作。例如URL属于2个分类,响应动作分别为“告警”和“阻断”,此时执行“阻断”。
    • 松散模式:最终动作取所有命中分类中最宽松的动作。例如URL属于2个分类,响应动作分别为“告警”和“阻断”,此时执行“告警”。

    URL过滤处理流程:

    在NGFW启用URL过滤功能的情况下,当用户通过NGFW使用HTTP或HTTPS访问某个网络资源时, NGFW将进行URL过滤。

    在这里插入图片描述

    图:URL过滤处理流程

    处理流程:

    1. 白名单
    2. 黑名单
    3. 自定义URL
    4. 预定义URL
    5. 远程预定义

    详细URL过滤处理流程:

    在这里插入图片描述

    图:详细URL过滤处理流程
    1. 用户发起URL访问请求,如果数据流匹配了安全策略,且安全策略的动作为允许,则进行URL过滤处理流程。

    2. FW检测HTTP报文是否异常。

      • 如果HTTP报文异常,则阻断该请求。
      • 如果HTTP报文正常,则进行下一步检测。
    3. FW将URL信息与白名单进行匹配。

      • 如果匹配白名单,则允许该请求通过。
      • 如果未匹配白名单,则进行下一步检测。
    4. FW将URL信息与黑名单进行匹配。

      • 如果匹配黑名单,则阻断该请求。
      • 如果未匹配黑名单,则进行下一步检测。
    5. FW将HTTP请求中的referer字段与白名单进行匹配。

      • 如果HTTP请求中的referer字段与配置的referer-host匹配,则允许该请求通过。
      • 如果HTTP请求中的referer字段与配置的referer-host不匹配,用户可以决定是否使用referer字段去匹配所有配置的白名单规则。
        • 当referer字段匹配白名单功能开启时,会使用referer字段与配置的所有白名单规则继续匹配。
          • 如果匹配,则允许该请求通过。
          • 如果未匹配,则进行下一步检测。
        • 当referer字段匹配白名单功能关闭时,不会使用referer字段与配置的所有白名单匹配,而是进行下一步检测。

      referer字段匹配白名单功能默认开启,如果要关闭该功能,可以配置undo referer-filter whitelist-all enable命令。

    6. FW将URL信息与自定义分类进行匹配。

      • 如果匹配自定义分类,则按照自定义URL分类的控制动作处理请求。
      • 如果未匹配自定义分类,则进行下一步检测。
    7. FW将URL信息与恶意URL、低信誉URL进行匹配。

      • 如果匹配恶意URL或低信誉URL,则阻断该请求。
      • 如果未匹配恶意URL或低信誉URL,则进行下一步检测。
    8. FW将URL信息与本地缓存中的预定义分类进行匹配。

      • 如果在本地缓存中查询到对应的分类,则按照该分类的控制动作处理请求。
      • 如果在本地缓存中没有查询到对应的分类,则进行远程查询。
        • 如果远程查询服务器可用,则继续进行远程查询。
        • 如果远程查询服务器不可用,则按照缺省动作处理请求。
    9. 启动远程查询。

      1. 如果远程查询服务器在设定的超时时间内没有返回结果,则按照管理员配置的“超时后动作”处理。
      2. 如果远程查询服务器上明确查询到该URL属于某个预定义分类,则按照该分类的控制动作处理。

    URL远程查询过程:

    一般来说,URL远程查询由安全中心、调度服务器和查询服务器共同完成。各设备的作用如下:

    • 安全中心:安全中心的域名为sec.huawei.com作用是对FW进行设备认证。如果认证通过,安全中心将根据FW所在的国家/地区信息,向FW提供该区域内的调度服务器地址和端口。

      和安全中心进行交互时,FW上需要配置安全策略放行相关流量,协议为TCP,目的端口为80。

    • 调度服务器:调度服务器的作用是向FW提供区域内的查询服务器地址和端口。由于调度服务器是分区域部署的,所以FW上必须配置正确的国家/地区信息,否则无法成功获取到调度服务器的地址和端口。

      和调度服务器进行交互时,FW上需要配置安全策略放行相关流量,协议为TCP,目的端口为12612。

    • 查询服务器:查询服务器的作用是处理查询请求,并将查询结果返回给FW。查询服务器也是分区域部署的,且和调度服务器存在配套关系,即调度服务器只能向FW提供同一区域内的查询服务器地址和端口。

      和查询服务器进行交互时,FW上需要配置安全策略放行相关流量,协议为UDP,目的端口为12600。

    • 安全中心:安全中心的域名为sec.huawei.com,作用是对FW进行设备认证。如果认证通过,安全中心将根据FW所在的国家/地区信息,向FW提供该区域内的调度服务器地址和端口。

      和安全中心进行交互时,FW上需要配置安全策略放行相关流量,协议为TCP,目的端口为80。

    • 调度服务器:调度服务器的作用是向FW提供区域内的查询服务器地址和端口。由于调度服务器是分区域部署的,所以FW上必须配置正确的国家/地区信息,否则无法成功获取到调度服务器的地址和端口。

      和调度服务器进行交互时,FW上需要配置安全策略放行相关流量,协议为TCP,目的端口为12612。

    • 查询服务器:查询服务器的作用是处理查询请求,并将查询结果返回给FW。查询服务器也是分区域部署的,且和调度服务器存在配套关系,即调度服务器只能向FW提供同一区域内的查询服务器地址和端口。

      和查询服务器进行交互时,FW上需要配置安全策略放行相关流量,协议为UDP,目的端口为12600。

    URL远程查询过程:

    在这里插入图片描述

    图:URL远程查询过程
    1. FW向华为安全中心发起认证请求,并请求调度服务器的地址。
    2. 认证通过后,华为安全中心根据FW的国家/地区信息,向FW提供该区域内的调度服务器地址和端口。
    3. FW向调度服务器请求查询服务器的地址和端口。
    4. 调度服务器确认FW的设备信息无误后,向FW提供查询服务器的地址和端口。一般来说,FW将收到多个查询服务器的地址和端口。
    5. FW向所有查询服务器发起测速消息,并根据响应速度从中选出最优服务器,然后向该服务器请求URL分类信息。
    6. 查询服务器反馈URL分类信息,FW将根据此分类信息继续进行URL过滤。

    URL过滤配置思路

    配置思路:

    1. 配置URL自定义分类。
    2. 配置黑白名单
    3. 配置URL过滤Profile
    4. 配置安全策略
    5. 提交编译

    URL排除思路:

    1. 策略下配置的规则存在优先级关系。
    2. 用户没有在安全策略中应用或应用错误。
    3. 流量匹配了优先级更高的安全策略规则。
    4. URL过滤配置文件没有在安全策略中应用。
    5. 修改后的URL过滤配置文件未提交编译。

    参考文档:华为HedEx文档


    展开全文
  • 什么是URL

    万次阅读 多人点赞 2021-03-06 10:25:13
    什么是URL? 本文讨论了统一资源定位符(URL),并解释了他们是什么,以及如何被构建的。 前提: 你首先需要知道互联网是如何工作的,什么是网络服务器以及网络中超链接的概念。 目标: 你将会学习到 URL是...
  • C#使用webBrowser控件获取URL下载图片

    千次下载 热门讨论 2013-10-05 01:46:09
    通过C#网络编程的webBrowser获取网页中的url并简单的尝试下载网页中的图片,主要是为以后网络开发的基础学习.其中主要的通过应用程序结合网页知识、正则表达式实现浏览、获取url、下载图片三个功能.而且很清晰的解析...
  • nodejs: url模块已过期,推荐使用URL

    千次阅读 2021-02-05 15:30:46
    对于一个url: const urlStr = "https://m.shop.com/home/share?id=4433&...import url from 'url'; import qs from 'querystring' const url = url.parse(urlStr) const query = qs.parse(url.que
  • URL 设计常识

    千次阅读 2017-12-03 22:19:42
    URL的设计。 URL(资源定位符)用来指定方向 URL指向的东西可以和URL名称上毫无关系,但是可以通过URL访问到。
  • HTTP协议——URL

    万次阅读 多人点赞 2018-06-07 11:50:06
    URL 是一种 URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。 大部分URL遵循一种标准格式,该格式包含三个部分: 第一部分:...
  • URL重定向(跳转)漏洞

    万次阅读 2019-01-28 21:15:03
    转自:https://landgrey.me/open-redirect-bypass/下面是owasp对URL跳转漏洞,也叫开放重定向漏洞(open redirect)的一段描述:Unvalidated redirects and forwards are possible when a web application accepts ...
  • Flutter 插件url_launcher

    万次阅读 多人点赞 2020-04-12 14:12:50
    学无止境。——荀子 最近项目需求就是打开一...pub.dev提供了加载网页的插件url_launcher;所谓的插件也是用安卓和苹果原生代码实现的,对插件的代码进行解压可以看到。 加载网页的方式: _launchURL() async ...
  • URL是什么意思 ? URL介绍

    万次阅读 多人点赞 2020-01-09 20:14:18
    Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。 URL URL是对互联网上得到的...
  • URL格式

    万次阅读 2017-11-18 12:25:44
    参考了百度百科,说一下URL同志的格式问题:URL的定义:在WWW上,每一信息...URL的组成部分URL由三部分组成:资源类型,存放资源的主机域名,资源文件名。URL的一般语法格式:(带方括号[]的为可选项):protocol :// ho
  • URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,也就是我们常说的域名、浏览器访问地址。 在Java中就是使用URL访问网络资源,获取...
  • 分享几个绕过URL跳转限制的思路

    万次阅读 2019-08-02 20:00:27
    基本的思路大家就是直接替换后面的URL来检测是否存在任意URL跳转,如果不存在,就直接返回到它自己的域名,如果存在, 就跳转到你指定的URL,       这里我讲述我所知道的所有小点...
  • 什么是URL

    千次阅读 多人点赞 2019-04-27 03:28:00
    URL(Uniform Resource Locator)的意思是统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法,也被称为"网址"。 tip:在Internet上所有资源都有一个独一无二的URL地址,我们可以通过在字...
  • Android Http URL Connection获取数据并JSON解析

    千次下载 热门讨论 2014-04-29 14:07:40
    本文主要讲解,通过HttpURLConnection从服务端获取数据,然后经过JSON解析后,显示在手机屏幕上。
  • URL详解

    万次阅读 多人点赞 2017-04-05 20:07:36
    一:URL举例 就以下面这个URL为例,介绍下普通URL的各部分组成 http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name 从上面的URL可以看出,一个完整的URL包括以下几部分: 1....
  • java URL 获取本地URL

    万次阅读 2019-09-20 15:59:40
    java URL 获取本地URL new URL("file:\\d:\\hehe.html")
  • golang_url: url的编码和解码

    千次阅读 2020-07-30 09:41:30
    QueryEscape函数对s进行转码使之可以安全的用在URL查询里。 QueryUnescape func QueryUnescape(s string) (string, error) QueryUnescape函数用于将QueryEscape转码的字符串还原。它会把%AB改为字节0xAB,将’+‘改...
  • 删除url中某个参数

    千次阅读 2019-11-04 19:30:29
    这里的url 是指一个网站链接 例如: https://baidu.com?a=1&b=2 下面看一下封装的代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src=...
  • URL跳转漏洞

    千次阅读 2018-02-26 13:25:42
    漏洞描述服务端未对传入的跳转url变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意...
  • URL原理、URL编码、URL特殊字符

    万次阅读 2017-03-31 14:54:45
    From: http://blog.csdn.net/chenlycly/article/details/51820727 From: http://blog.csdn.net/zmx729618/article/details/51381655 From: ...   HTML URL 编码参考手册:htt...
  • 网址URL中特殊字符转义编码

    千次阅读 2018-07-27 20:45:42
    原文:https://blog.csdn.net/pcyph/article/details/45010609 网址URL中特殊字符转义编码 字符 - URL编码值 空格 - %20 " - %22 # - %23 % - %25 &amp; - %26 ( - ...
  • Java URL处理

    千次阅读 2017-10-11 18:33:23
    URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。 本章节我们将介绍Java是如处理URL的。URL可以分为如下几个部分。protocol://host:...
  • URL的概念

    千次阅读 多人点赞 2019-06-02 10:04:13
    URL的引入 在生活中,我们经常会看到你要在网上查找东西,会在浏览器中输入一个“www.baidu.com”之类的地址,这个其实就是URLURL有很多,分类的话,有局域网下的URL,公网(外网)的URL等等 www.baidu.com 这个就是...
  • 程序正在修改URL协议关联

    千次阅读 2020-08-03 11:44:47
    电脑管家提示信息:程序正在修改URL协议关联,修改后网址可能会跳转到指定地址。下边的360则提示:极少软件会修改此项注册新的URL协议,此处容易被木马、病毒利用。如果您不认识此程序,请阻止。 原因 说实话,...
  • 生命不止,继续 go go go !!!今天跟大家分享的是是net/url package...Package url parses URLs and implements query escaping.接下来就看看有那些方法:func QueryEscapefunc QueryEscape(s string) stringQueryEscape
  • C语言URL解析器(代码分享)

    千次阅读 2016-06-12 21:07:24
    C语言URL解析器(代码分享)  By qianghaohao(Xqiang)  本程序可以解析出URL中每个字段的然后存入结构体  中.也可以调用提供的API只获取需要的部分.  本URL解析器代码来自https://github.com/jwerle/url.h  在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,446,126
精华内容 1,778,450
关键字:

url