精华内容
下载资源
问答
  • 安全测试主要类型

    千次阅读 2016-01-26 08:58:15
    本篇博文主要介绍安全测试的主要类型,及其最基本的概念,不涉及到每一安全类型的详细内容,每一类型的详细内容将在后续的博文中分开详细讲解。 安全测试类型表格 如下: 类型 简单描述 失效的身份验证机制 只对...

    本篇博文主要介绍安全测试的主要类型,及其最基本的概念,不涉及到每一安全类型的详细内容,每一类型的详细内容将在后续的博文中分开详细讲解。


    安全测试类型表格 如下:

    类型简单描述
    失效的身份验证机制只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie)
    会话管理劫持检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。
    SQL注入注入攻击漏洞,这些攻击发生在当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
    XPath注入XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。
    XSS跨站脚本攻击恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
    CSRF跨站请求伪造攻击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单)
    不安全的直接对象引用在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据
    安全配置错误Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。
    不安全的加密存储未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储
    没有限制URL访问系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)
    传输层保护不足在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块)
    未验证的重定向(redirectUrl)和转发攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站。
    敏感信息泄露许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。
    功能级访问控制缺失大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。
    使用含有已知漏洞的组件组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重
    缓冲区溢出当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
    LDAP注入利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。
    篡改输入利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。


    除了上述提到的之外,看到一些文章上也有提到解析应用程序、绕过客户端控件的原理和预防、OS注入、逻辑缺陷以及社会学攻击等,这里不再细说,有兴趣的或者涉及到的时候可以查阅下相关资料。

    展开全文
  • 面试官:兄弟,说说基本类型和包装类型的区别吧

    万次阅读 多人点赞 2019-09-29 08:36:07
    Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double。基本类型和包装类型的区别主要有以下 4 点。

    六年前,我从苏州回到洛阳,抱着一幅“海归”的心态,投了不少简历,也“约谈”了不少面试官,但仅有两三个令我感到满意。其中有一位叫老马,至今还活在我的手机通讯录里。他当时扔了一个面试题把我砸懵了:说说基本类型和包装类型的区别吧。

    我当时二十三岁,正值青春年华,从事 Java 编程已有 N 年经验(N < 4),自认为所有的面试题都能对答如流,结果没想到啊,被“刁难”了——原来洛阳这块互联网的荒漠也有技术专家啊。现在回想起来,脸上不自觉地泛起了羞愧的红晕:主要是自己当时太菜了。不管怎么说,是时候写篇文章剖析一下基本类型和包装类型的区别了。

    Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double。基本类型和包装类型的区别主要有以下 4 点。

    01、包装类型可以为 null,而基本类型不可以

    别小看这一点区别,它使得包装类型可以应用于 POJO 中,而基本类型则不行。

    POJO 是什么呢?这里稍微说明一下。

    POJO 的英文全称是 Plain Ordinary Java Object,翻译一下就是,简单无规则的 Java 对象,只有属性字段以及 setter 和 getter 方法,示例如下。

    class Writer {
    	private Integer age;
    	private String name;
    
    	public Integer getAge() {
    		return age;
    	}
    
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    

    和 POJO 类似的,还有数据传输对象 DTO(Data Transfer Object,泛指用于展示层与服务层之间的数据传输对象)、视图对象 VO(View Object,把某个页面的数据封装起来)、持久化对象 PO(Persistant Object,可以看成是与数据库中的表映射的 Java 对象)。

    那为什么 POJO 的属性必须要用包装类型呢?

    《阿里巴巴 Java 开发手册》上有详细的说明,我们来大声朗读一下(预备,起)。

    数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常。

    02、包装类型可用于泛型,而基本类型不可以

    泛型不能使用基本类型,因为使用基本类型时会编译出错。

    List<int> list = new ArrayList<>(); // 提示 Syntax error, insert "Dimensions" to complete ReferenceType
    List<Integer> list = new ArrayList<>();
    

    为什么呢?因为泛型在编译时会进行类型擦除,最后只保留原始类型,而原始类型只能是 Object 类及其子类——基本类型是个特例。

    03、基本类型比包装类型更高效

    基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用。

    很显然,相比较于基本类型而言,包装类型需要占用更多的内存空间。假如没有基本类型的话,对于数值这类经常使用到的数据来说,每次都要通过 new 一个包装类型就显得非常笨重。

    03、两个包装类型的值可以相同,但却不相等

    两个包装类型的值可以相同,但却不相等——这句话怎么理解呢?来看一段代码就明明白白了。

    Integer chenmo = new Integer(10);
    Integer wanger = new Integer(10);
    
    System.out.println(chenmo == wanger); // false
    System.out.println(chenmo.equals(wanger )); // true
    

    两个包装类型在使用“”进行判断的时候,判断的是其指向的地址是否相等。chenmo 和 wanger 两个变量使用了 new 关键字,导致它们在“”的时候输出了 false。

    chenmo.equals(wanger) 的输出结果为 true,是因为 equals 方法内部比较的是两个 int 值是否相等。源码如下。

    private final int value;
    
    public int intValue() {
        return value;
    }
    public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }
    

    瞧,虽然 chenmo 和 wanger 的值都是 10,但他们并不相等。换句话说就是:将“==”操作符应用于包装类型比较的时候,其结果很可能会和预期的不符

    04、自动装箱和自动拆箱

    既然有了基本类型和包装类型,肯定有些时候要在它们之间进行转换。把基本类型转换成包装类型的过程叫做装箱(boxing)。反之,把包装类型转换成基本类型的过程叫做拆箱(unboxing)。

    在 Java SE5 之前,开发人员要手动进行装拆箱,比如说:

    Integer chenmo = new Integer(10);  // 手动装箱
    int wanger = chenmo.intValue();  // 手动拆箱
    

    Java SE5 为了减少开发人员的工作,提供了自动装箱与自动拆箱的功能。

    Integer chenmo  = 10;  // 自动装箱
    int wanger = chenmo;     // 自动拆箱
    

    上面这段代码使用 JAD 反编译后的结果如下所示:

    Integer chenmo = Integer.valueOf(10);
    int wanger = chenmo.intValue();
    

    也就是说,自动装箱是通过 Integer.valueOf() 完成的;自动拆箱是通过 Integer.intValue() 完成的。理解了原理之后,我们再来看一道老马当年给我出的面试题。

    // 1)基本类型和包装类型
    int a = 100;
    Integer b = 100;
    System.out.println(a == b);
    
    // 2)两个包装类型
    Integer c = 100;
    Integer d = 100;
    System.out.println(c == d);
    
    // 3)
    c = 200;
    d = 200;
    System.out.println(c == d);
    

    答案是什么呢?有举手要回答的吗?答对的奖励一朵小红花哦。

    第一段代码,基本类型和包装类型进行 == 比较,这时候 b 会自动拆箱,直接和 a 比较值,所以结果为 true。

    第二段代码,两个包装类型都被赋值为了 100,这时候会进行自动装箱,那 == 的结果会是什么呢?

    我们之前的结论是:将“==”操作符应用于包装类型比较的时候,其结果很可能会和预期的不符。那结果是 false?但这次的结果却是 true,是不是感觉很意外?

    第三段代码,两个包装类型重新被赋值为了 200,这时候仍然会进行自动装箱,那 == 的结果会是什么呢?

    吃了第二段代码的亏后,是不是有点怀疑人生了,这次结果是 true 还是 false 呢?扔个硬币吧,哈哈。我先告诉你结果吧,false。

    为什么?为什么?为什么呢?

    事情到了这一步,必须使出杀手锏了——分析源码吧。

    之前我们已经知道了,自动装箱是通过 Integer.valueOf() 完成的,那我们就来看看这个方法的源码吧。

    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
    

    难不成是 IntegerCache 在作怪?你猜对了!

    private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];
    
        static {
            // high value may be configured by property
            int h = 127;
            int i = parseInt(integerCacheHighPropValue);
            i = Math.max(i, 127);
            h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
            high = h;
    
            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
    
            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }
    }
    

    大致瞟一下这段代码你就全明白了。-128 到 127 之间的数会从 IntegerCache 中取,然后比较,所以第二段代码(100 在这个范围之内)的结果是 true,而第三段代码(200 不在这个范围之内,所以 new 出来了两个 Integer 对象)的结果是 false。

    看完上面的分析之后,我希望大家记住一点:当需要进行自动装箱时,如果数字在 -128 至 127 之间时,会直接使用缓存中的对象,而不是重新创建一个对象

    自动装拆箱是一个很好的功能,大大节省了我们开发人员的精力,但也会引发一些麻烦,比如下面这段代码,性能就很差。

    long t1 = System.currentTimeMillis();
    Long sum = 0L;
    for (int i = 0; i < Integer.MAX_VALUE;i++) {
        sum += i;
    }
    long t2 = System.currentTimeMillis();        
    System.out.println(t2-t1);
    

    sum 由于被声明成了包装类型 Long 而不是基本类型 long,所以 sum += i 进行了大量的拆装箱操作(sum 先拆箱和 i 相加,然后再装箱赋值给 sum),导致这段代码运行完花费的时间足足有 2986 毫秒;如果把 sum 换成基本类型 long,时间就仅有 554 毫秒,完全不一个等量级啊。

    05、最后

    谢谢大家的阅读,原创不易,喜欢就点个赞,这将是我最强的写作动力。如果你觉得文章对你有所帮助,也蛮有趣的,就关注一下我的公众号,谢谢。

    展开全文
  • 数据类型 整型:int() ...e记法/科学计数法:记录比较大的数 判断数据类型的函数 Type函数 isinstance函数 Python的主要操作符 算术操作符 / % ** // 逻辑操作符 and or not ...

    数据类型

    整型:int()
    浮点型:float()

    小数
    Python区分整型和浮点型的依据看是否有小数点
    布尔类型:
    特殊的整型,true(1) false(0)
    在这里插入图片描述
    字符串:str()

    数据类型间的互相转化
    在这里插入图片描述
    在这里插入图片描述
    负数类型
    e记法/科学计数法:记录比较大的数
    在这里插入图片描述
    判断数据类型的函数
    Type函数
    在这里插入图片描述
    isinstance函数
    在这里插入图片描述

    Python的主要操作符

    算术操作符

      +  -   *   /   %   **   //
    

    在这里插入图片描述
    在这里插入图片描述
    逻辑操作符
    and or not
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • JAVA 主要用来开发什么样类型的程序比较多?有人会选择用JAVA来开发WINDOWS界面程序(一般的应用管理系统)吗?开发速度太慢了!太复杂了!一般企业上所用的管理系统是不是大都是用JSP做的?用JSP来做可以在UNIX和...

    JAVA  主要用来开发什么样类型的程序比较多?

    有人会选择用JAVA来开发WINDOWS界面程序(一般的应用管理系统)吗?开发速度太慢了!太复杂了!

    一般企业上所用的管理系统是不是大都是用JSP做的?用JSP来做可以在UNIX和WINDOWS下运行,其它和ASP相比好像没有什么优点。

    我原来是用DELPHI来开发程序,我想多学习一门语言JAVA,但我又犹豫,用JAVA只能开发一些非界面系统,如果用JAVA来开发WINDOWS界面程序倒不如用DELPHI来开发好。如果是用JSP来开发B/S管理系统,我不如用ASP来开发好,因为我ASP熟。我该不该学JAVA?

    展开全文
  • NAS实现类型对比

    千次阅读 2017-07-11 16:38:51
    一 介绍NAS主要有三种类型的实现:统一式、网关式和横向扩展式(Scale-out)。统一NAS使用统一的存储平台将基于NAS和基于SAN的数据访问合并,提供了可以同时管理二种环境的统一管理界面。网关NAS使用外部存储来存取...
  • 对长白山林区主要可燃物类型地表可燃物载量进行了对比分析和聚类分析。通过可燃物类型载量的对比分析,得出易燃的可燃物类型是云冷杉林(鱼鳞云杉103a)、落叶松林(115a)和云冷杉林(鱼鳞云杉80a),最不易燃的是...
  • FusionCharts与Highcharts图表类型对比

    千次阅读 2014-04-18 10:46:01
    最近在论坛上来看到很多网友在问FusionCharts与Highcharts比较而言,哪个更好,小编觉得在进行图表控件选型时,主要可从图表类型和功能方面来对比FusionCharts与Highcharts。本文主要对比FusionCharts与Highcharts的...
  • Text 类型:   数据类型 描述 CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 VARCHAR(size) 保存可变长度的字符串(可包含字母、数字...
  • Java中的long类型和Long类型比较大小

    千次阅读 2019-01-14 19:12:59
    ”的比较,这里我们进行一个Long类型数据和long类型数据的比较大小的讲解。 Java中Long和long的区别 Java的数据类型分为两种: 1、基本类型:byte(8),short(16),int(32),long(64),float(32),double(64),char(16),...
  • 主要介绍了MySQL与Oracle 差异比较之一数据类型,需要的朋友可以参考下
  • Java基本数据类型比较

    千次阅读 2018-03-27 18:51:46
    可以比较基本数据类型 , 也可以比较引用数据类型 equals: 只能比较引用数据类型, 默认比较的是地址值*(string类中重写了eqals方法),如果我们想建立自己的比较方式, 需要重写equals方法通过对比字符串比较来理解,...
  • Python主要的内置数据类型有哪些?

    千次阅读 2019-04-18 17:57:36
    Python基本内置数据类型有哪些: 一些基本数据类型,比如:整型(数字)(int)、字符串(str)、元组(tuple)、列表(list)、字典(dict)和布尔类型。 四种不同的数字类型: int(有符号整型) long(长整型[也可以...
  • MySQL与Oracle数据类型对比

    千次阅读 2018-11-07 17:18:01
    MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系。 一、常见数据...
  • 模数转换器(ADC)的几种主要类型简介

    万次阅读 多人点赞 2018-08-18 23:53:58
    并行比较ADC主要特点是速度快,它是所有的A/D转换器中速度最快的,现代发展的高速ADC大多采用这种结构,采样速率能达到1GSPS以上。但受到功率和体积的限制,并行比较ADC的分辨率难以做的很高。 这种结构的ADC所有...
  • JAVA比较(基本数据类型,对象类型)

    千次阅读 2018-01-29 13:14:00
    两个人的年纪谁大,谁小,年纪一般是基本数据类型,整型,如小明今年30岁,小张今年25我们说小张比较年轻,我们是怎么判断的呢,我们是用年纪的差,即小明年龄减去小张年龄,如果大于0,说明小张
  • Golang 之区分类型别名与类型定义

    万次阅读 2019-07-06 17:12:14
    Golang 之区分类型别名(Type Alias)与类型定义(Type define)一、类型别名(Type Alias)、类型定义是什么?二、区分类型别名与类型定义类型定义 ...主要应用于代码升级、工程重构、迁移中类型...
  • python里使用enum库枚举类型比较

    千次阅读 2017-12-03 10:27:27
    在前面学习了怎么样使用枚举类型的创建和迭代,现在来学习一个枚举类型比较功能,其实我们使用枚举类型主要原因,就是为了方便记住不同的类型或标识,比如在学校里,有老师、学生,在程序里为了分别这两者,就得...
  • C++与C#对比:强制类型转换

    千次阅读 2012-12-29 21:07:32
    类型与弱类型语言 像C++,C,Java,C#这些主流的编程语言都是强类型语言.而一些脚本语言则是弱类型的,比如vbscript , javascript. 1.强类型语言简单的理解就是当定义了一个变量之后就会指定一个固定的类型,并对应一...
  • java基本类型与引用类型

    万次阅读 多人点赞 2018-01-04 17:30:32
    java基本类型与引用类型 目录 java基本类型与引用类型 ...一基本数据类型 ...对象相等比较时 一、基本数据类型 java中一共分为8种基本数据类型:byte、short、int、long、float、double、char、b
  • 类型转换及类型转换函数

    千次阅读 2018-02-03 21:31:05
    所以类型转换,就是为了告诉编译器...允许任何类型之间的转换过于粗鲁并且在程序语句中难以识别(主要是人工阅读代码可能难以分辨而已,因为C++语法复杂)。所以c++定义了四种类型转换,解决上述缺点。 2、C++风格
  • golang中的值类型和引用类型

    千次阅读 2019-08-20 20:48:29
    类型与引用类型类型类型:这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。可以通过 &...
  • 本篇文章主要是对C/C++与Java各数据类型所占字节数进行了详细的对比。需要的朋友可以过来参考下,希望对大家有所帮助
  • Java中double类型比较大小或相等的方法

    万次阅读 热门讨论 2018-06-26 20:15:22
    在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍两种比较double数据是否相等的方法。第一...
  • Java常用类型定义、转换及比较

    千次阅读 2012-01-10 10:33:27
    Java常用类型定义、转换及比较主要有以下三个方面:  (一)Integer类型  1).定义  Integer a=new Integer(int value);  Integer a=new Integer(String value);  2).转换  i.定义...
  • 三种存储类型比较-文件、块、对象存储

    万次阅读 多人点赞 2016-07-26 09:09:28
    块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。  首先...
  • java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但... 主要以下几种转换方法,供参考: 一、强制类型转换 [java] longll=300000; intii=(int)ll; 二、调用intValue()方法 [j
  • Java 基本类型与引用类型

    千次阅读 多人点赞 2019-03-27 20:55:51
    Java 基本类型与引用类型 一、基本数据类型 java 中一共分为 8 种基本数据类型:byte、short、int、long、float、double、char、boolean, 其中 byte、short、int、long 是整型。float、double 是浮点型,char 是...
  • C#详解值类型和引用类型区别

    万次阅读 多人点赞 2016-04-20 17:59:42
    首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。 值类型(value type):byte,short,int,long,float,double,decimal,...
  • numeric与decimal表示的数据类型是有的区别的,主要在精确度上,更详细的确要看下面对比与实例比较。 decimal(numeric ) 同义,用于精确存储数值 。 decimal 数据类型最多可存储 38 个数字,所有数字都...
  • postgresql数字类型

    万次阅读 2017-12-06 22:11:27
    postgresql的数据类型很多,也可以使用create type命令创建自定义数据类型,但常用的数据类型是以下三种: l数字数据类型 l字符串数据类型 l日期/时间数据类型 数字数据类型 数字数据类型用于指定表中的数字数据,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,549,146
精华内容 619,658
关键字:

对比的主要类型