浅谈析构函数~

编程小六儿~ 发表了文章 • 3 个评论 • 606 次浏览 • 2016-09-08 12:21 • 来自相关话题

析构函数是干什么用的:
 
   析构函数是当对象脱离其作用域时,系统会自动执行析构函数。就是相当于清理善后的作用。
   比如你在一个函数中申请了一块内存空间来存储一个对象,Bird是一个类, color,age,name则是属性,b1是对象,你调用完函数之后, 这个对象如果没有用了,我们不应该把这个对象留着浪费空间,虽然电脑内存很大,
   但是如果一个小程序中没有释放申请的空间的话,有很可能就会导致电脑内存耗尽。所以我们要释放这个对象的空间。析构函数就是释放这个空间的作用(和构造函数是相反的)





 
 
什么时候调用析构函数:





    看运行结果说明析构函数是在释放内存空间的时候才会被调用,当这个对象的作用域结束之后,他自己会
调用析构函数,从而会执行你在析构函数里写的释放内存空间的语句。
 
 
END  看在吃货为了写这个现在还没去吃饭的份上~求赞求赞~么么哒  查看全部
析构函数是干什么用的:
 
   析构函数是当对象脱离其作用域时,系统会自动执行析构函数。就是相当于清理善后的作用。
   比如你在一个函数中申请了一块内存空间来存储一个对象,Bird是一个类, color,age,name则是属性,b1是对象,你调用完函数之后, 这个对象如果没有用了,我们不应该把这个对象留着浪费空间,虽然电脑内存很大,
   但是如果一个小程序中没有释放申请的空间的话,有很可能就会导致电脑内存耗尽。所以我们要释放这个对象的空间。析构函数就是释放这个空间的作用(和构造函数是相反的)

2.png

 
 
什么时候调用析构函数:

1.png

    看运行结果说明析构函数是在释放内存空间的时候才会被调用,当这个对象的作用域结束之后,他自己会
调用析构函数,从而会执行你在析构函数里写的释放内存空间的语句。
 
 
END  看在吃货为了写这个现在还没去吃饭的份上~求赞求赞~么么哒 

php面向对象笔记01——类和对象

编程katerina 发表了文章 • 6 个评论 • 752 次浏览 • 2016-09-08 12:00 • 来自相关话题

大家期待了一个月的php面向对象终于开课啦!!!
那面向对像的第一课帅哥主要讲了什么呢?
封装!!!
面向对象有三个特性:封装、继承和多态。
今天主要讲封装,我们先不说什么是封装了,先讲讲怎么声明一个类。
一、类的声明
  我们先声明一个学生类(Student);
  学生都有什么特征呢?  姓名、年龄、性别。
  学生能做什么?
    第一个,走路    “来学校”;
    第二个,吃      “去楼下肯德基吃!!!”;
    第三个,打招呼   “碰见严老师打招呼!”;
    第四个,学习    “学习php,日渐消瘦  :) ”;
  那好,知道需求之后我们声明一个学生类吧! //声明一个类
class Student{
//属性——静态特征
var $name;
var $age;
var $sex;

//方法
function walk(){
echo "每天按时学校上学";
}
function eat(){
echo "偶尔去肯德基吃汉堡包";
}
function say(){
echo "碰见严老师打招呼!";
}
function study(){
echo "学习php,日渐消瘦 :) ";
}
}
  我从这段代码里过滤出了声明一个类的格式,如下:
  class 类名{
    //属性;
    var 属性;
    function 方法名(参数){
       这里写方法的内容
    }
  }
 二、通过对象调用学生类
 
  讲一个程序员的笑话,说你没有对象怎么办呢?new一个咯:)
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
  我们现在就讲一讲如何new一个对象。 //创建对象,对象是类的实例化。
$stu1 = new Student();
$stu1->name = '图亚';
$stu1->age = '16';
$stu1->sex = '妹纸';
echo $stu1->name."是个".$stu1->age."岁的".$stu1->sex."<br>";
$stu1->walk();echo "<br>";
$stu1->eat();echo "<br>";
$stu1->say();echo "<br>";
$stu1->study();echo "<br>";程序的运行结果如下图:





  查看全部
大家期待了一个月的php面向对象终于开课啦!!!
那面向对像的第一课帅哥主要讲了什么呢?
封装!!!
面向对象有三个特性:封装、继承和多态。
今天主要讲封装,我们先不说什么是封装了,先讲讲怎么声明一个类。
一、类的声明
  我们先声明一个学生类(Student);
  学生都有什么特征呢?  姓名、年龄、性别。
  学生能做什么?
    第一个,走路    “来学校”;
    第二个,吃      “去楼下肯德基吃!!!”;
    第三个,打招呼   “碰见严老师打招呼!”;
    第四个,学习    “学习php,日渐消瘦  :) ”;
  那好,知道需求之后我们声明一个学生类吧!
	//声明一个类
class Student{
//属性——静态特征
var $name;
var $age;
var $sex;

//方法
function walk(){
echo "每天按时学校上学";
}
function eat(){
echo "偶尔去肯德基吃汉堡包";
}
function say(){
echo "碰见严老师打招呼!";
}
function study(){
echo "学习php,日渐消瘦 :) ";
}
}

  我从这段代码里过滤出了声明一个类的格式,如下:
  class 类名{
    //属性;
    var 属性;
    function 方法名(参数){
       这里写方法的内容
    }
  }
 二、通过对象调用学生类
 
  讲一个程序员的笑话,说你没有对象怎么办呢?new一个咯:)
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
  我们现在就讲一讲如何new一个对象。
	//创建对象,对象是类的实例化。
$stu1 = new Student();
$stu1->name = '图亚';
$stu1->age = '16';
$stu1->sex = '妹纸';
echo $stu1->name."是个".$stu1->age."岁的".$stu1->sex."<br>";
$stu1->walk();echo "<br>";
$stu1->eat();echo "<br>";
$stu1->say();echo "<br>";
$stu1->study();echo "<br>";
程序的运行结果如下图:

asd.PNG

 

编程的十个好习惯

编程小六儿~ 发表了文章 • 3 个评论 • 557 次浏览 • 2016-09-08 10:17 • 来自相关话题

1.设计规划。
 现在是模块化程序设计的天下,应用程序要实现的目标是金字塔尖,进行程序设计规划的意义就在于:对构成金字塔的基础模块进行划分,规划得越详细,模块分工越明确,越容易明白下一步该做什么。这好比搭积木的游戏,你可以把你的积木块组合成各种形状,但首先要熟悉每个积木块的功能。
2、有备无患。
 实战之前,先找一些样例程序仔细研究,最起码明白怎么开头,怎么结尾,别打无准备之仗。
3、葵花宝典。
 做一份所用程序语言的精简列表,包括基本数据类型、各类运算符说明、基本语句结构、常用关键词(保留字)、常用函数(控件)说明等。
4、自由独立。
 为你的应用程序建立一个单独的目录,这样既方便应用程序文件的管理,而且如果你要给程序搬"家",卷起"铺盖"就可以走人了。
5、见名知意。
 程序再小,用的变量也不会少,变量起名应当"见名知意",这是老规矩,好处是显而易见的。推荐使用"匈牙利命名法",它会使你的起名工作变得轻而易举,而且相当专业。
6、对称之美。
 编程也讲究对称之美,如果程序里用到A循环嵌套B判断,B判断又包含C循环之类的结构,记着使用缩进法。
7、多加注解。
 对程序中自定义的变量、函数、子程序加以功能性的注释说明,别嫌麻烦。如果三五个月之后,连自己写的东西都看不明白了,那才麻烦大了。
8、环境保护。
 如果应用程序需要修改系统设置,记着执行程序前先保存设置,结束后要恢复设置,千万别污染环境。
9、拿来主义。
 一个人的力量是有限的,大家的力量是无限的,平时多看看书,有好的经验、巧的方法、用得上的段子不妨拿来。多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。 
10、忍者无敌。
 当你认为程序代码写得"百分百"正确,而程序编译执行却百分百有毛病,你基本属于晕菜的时候,千万要忍,歇口气,重头来,别放弃!相信最终的胜利是属于你的!
 "高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。
 小伙伴们,自己的程序要自己写,别总偷懒。
 一句话多用心,勤动脑,重基础。
END  求赞求赞~~~~~ 查看全部
1.设计规划。
 现在是模块化程序设计的天下,应用程序要实现的目标是金字塔尖,进行程序设计规划的意义就在于:对构成金字塔的基础模块进行划分,规划得越详细,模块分工越明确,越容易明白下一步该做什么。这好比搭积木的游戏,你可以把你的积木块组合成各种形状,但首先要熟悉每个积木块的功能。
2、有备无患。
 实战之前,先找一些样例程序仔细研究,最起码明白怎么开头,怎么结尾,别打无准备之仗。
3、葵花宝典。
 做一份所用程序语言的精简列表,包括基本数据类型、各类运算符说明、基本语句结构、常用关键词(保留字)、常用函数(控件)说明等。
4、自由独立。
 为你的应用程序建立一个单独的目录,这样既方便应用程序文件的管理,而且如果你要给程序搬"家",卷起"铺盖"就可以走人了。
5、见名知意。
 程序再小,用的变量也不会少,变量起名应当"见名知意",这是老规矩,好处是显而易见的。推荐使用"匈牙利命名法",它会使你的起名工作变得轻而易举,而且相当专业。
6、对称之美。
 编程也讲究对称之美,如果程序里用到A循环嵌套B判断,B判断又包含C循环之类的结构,记着使用缩进法。
7、多加注解。
 对程序中自定义的变量、函数、子程序加以功能性的注释说明,别嫌麻烦。如果三五个月之后,连自己写的东西都看不明白了,那才麻烦大了。
8、环境保护。
 如果应用程序需要修改系统设置,记着执行程序前先保存设置,结束后要恢复设置,千万别污染环境。
9、拿来主义。
 一个人的力量是有限的,大家的力量是无限的,平时多看看书,有好的经验、巧的方法、用得上的段子不妨拿来。多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。 
10、忍者无敌。
 当你认为程序代码写得"百分百"正确,而程序编译执行却百分百有毛病,你基本属于晕菜的时候,千万要忍,歇口气,重头来,别放弃!相信最终的胜利是属于你的!
 "高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。
 小伙伴们,自己的程序要自己写,别总偷懒。
 一句话多用心,勤动脑,重基础。
END  求赞求赞~~~~~

90后小伙当黑客牟利 仅获74元仍被判刑

安全资讯Shun 发表了文章 • 5 个评论 • 608 次浏览 • 2016-09-08 09:32 • 来自相关话题

   中安在线讯 据大江晚报报道, 虽然仅获利74元钱,但非法控制他人计算机系统的汪某,依法难逃法律的惩罚。近日,芜湖经济技术开发区人民法院审结该案,汪某为其不法行为付出了沉痛的代价。
   1995年出生的汪某,正值青春年华,就读于江苏省某大学。2015年7月至8月间,汪某多次通过“1433抓鸡工具”扫描互联网上1433端口呈打开状态的计算机,植入木马程序使其成为“肉鸡”(即可被黑客远程控制的计算机),并利用某远程管理系统软件对“肉鸡”进行远程控制,总计成功控制130余台计算机。
    后汪某通过QQ号将“肉鸡”的控制权予以出售。李某通过QQ号与汪某联系,2015年7月30日和9月5日,李某以每台1元的价格,共计向汪某购买了74台“肉鸡”的控制权,并通过支付宝转账74元至汪某的支付宝账户。后李某利用“网络VIP防火墙登录器”软件控制该74台“肉鸡”攻击他人的游戏服务器。
    法院审理认为,被告人汪某违反国家规定,对130余台计算机信息系统实施非法控制,情节特别严重,其行为已触犯刑律,构成非法控制计算机信息系统罪。因汪某如实供述自己的罪行及认罪悔罪态度积极,判处其有期徒刑三年,宣告缓刑四年,并处罚金人民币三万元。

来源:中安在线  作者: 饶剑 查看全部
   中安在线讯 据大江晚报报道, 虽然仅获利74元钱,但非法控制他人计算机系统的汪某,依法难逃法律的惩罚。近日,芜湖经济技术开发区人民法院审结该案,汪某为其不法行为付出了沉痛的代价。
   1995年出生的汪某,正值青春年华,就读于江苏省某大学。2015年7月至8月间,汪某多次通过“1433抓鸡工具”扫描互联网上1433端口呈打开状态的计算机,植入木马程序使其成为“肉鸡”(即可被黑客远程控制的计算机),并利用某远程管理系统软件对“肉鸡”进行远程控制,总计成功控制130余台计算机。
    后汪某通过QQ号将“肉鸡”的控制权予以出售。李某通过QQ号与汪某联系,2015年7月30日和9月5日,李某以每台1元的价格,共计向汪某购买了74台“肉鸡”的控制权,并通过支付宝转账74元至汪某的支付宝账户。后李某利用“网络VIP防火墙登录器”软件控制该74台“肉鸡”攻击他人的游戏服务器。
    法院审理认为,被告人汪某违反国家规定,对130余台计算机信息系统实施非法控制,情节特别严重,其行为已触犯刑律,构成非法控制计算机信息系统罪。因汪某如实供述自己的罪行及认罪悔罪态度积极,判处其有期徒刑三年,宣告缓刑四年,并处罚金人民币三万元。

来源:中安在线  作者: 饶剑

面试会考到哟:SSL/TLS 协议运行机制的概述

安全资讯admin 发表了文章 • 4 个评论 • 938 次浏览 • 2016-09-08 07:11 • 来自相关话题

互联网的通信安全,建立在SSL/TLS协议之上。
本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。






一、作用

不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。
[](1) 窃听风险(eavesdropping):第三方可以获知通信内容。[/][](2) 篡改风险(tampering):第三方可以修改通信内容。[/][](3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。[/]SSL/TLS协议是为了解决这三大风险而设计的,希望达到:[](1) 所有信息都是加密传播,第三方无法窃听。[/][](2) 具有校验机制,一旦被篡改,通信双方会立刻发现。[/][](3) 配备身份证书,防止身份被冒充。[/]互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得SSL/TLS协议变得异常复杂。二、历史互联网加密通信协议的历史,几乎与互联网一样长。1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。1996年,SSL 3.0版问世,得到大规模应用。1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。三、基本的运行过程SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。但是,这里有两个问题。(1)如何保证公钥不被篡改?解决方法:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。(2)公钥加密计算量太大,如何减少耗用的时间?解决方法:每一次对话(session),客户端和服务器端都生成一个”对话密钥”(session key),用它来加密信息。由于”对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密”对话密钥”本身,这样就减少了加密运算的消耗时间。因此,SSL/TLS协议的基本过程是这样的:[list=1][]客户端向服务器端索要并验证公钥。[/][]双方协商生成”对话密钥”。[/][]双方采用”对话密钥”进行加密通信。[/]上面过程的前两步,又称为”握手阶段”(handshake)。四、握手阶段的详细过程


“握手阶段”涉及四次通信,我们一个个来看。需要注意的是,”握手阶段”的所有通信都是明文的。4.1 客户端发出请求(ClientHello)首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。在这一步,客户端主要向服务器提供以下信息。[](1) 支持的协议版本,比如TLS 1.0版。[/][](2) 一个客户端生成的随机数,稍后用于生成”对话密钥”。[/][](3) 支持的加密方法,比如RSA公钥加密。[/][](4) 支持的压缩方法。[/]这里需要注意的是,客户端发送的信息之中不包括服务器的域名。也就是说,理论上服务器只能包含一个网站,否则会分不清应该向客户端提供哪一个网站的数字证书。这就是为什么通常一台服务器只能有一张数字证书的原因。对于虚拟主机的用户来说,这当然很不方便。2006年,TLS协议加入了一个Server Name Indication扩展,允许客户端向服务器提供它所请求的域名。4.2 服务器回应(SeverHello)服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。服务器的回应包含以下内容。[](1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。[/][](2) 一个服务器生成的随机数,稍后用于生成”对话密钥”。[/][](3) 确认使用的加密方法,比如RSA公钥加密。[/][](4) 服务器证书。[/]除了上面这些信息,如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供”客户端证书”。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。4.3 客户端回应客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送下面三项信息。[](1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。[/][](2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。[/][](3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。[/]上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称”pre-master key”。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把”会话密钥”。至于为什么一定要用三个随机数,来生成”会话密钥”,dog250解释得很好:“不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。”此外,如果前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息。4.4 服务器的最后回应服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的”会话密钥”。然后,向客户端最后发送下面信息。[](1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。[/][](2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。[/]

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用”会话密钥”加密内容。







五、参考链接

MicroSoft TechNet, SSL/TLS in Detail
Jeff Moser, The First Few Milliseconds of an HTTPS Connection
Wikipedia, Transport Layer Security
StackExchange, How does SSL work?


来源:阮一峰( @ruanyf )  
链接:www.ruanyifeng.com/blog/2014/02/ssl_tls.html 查看全部
互联网的通信安全,建立在SSL/TLS协议之上。
本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。
f1462f5f6f40df049ef7986e084b2328.jpg



一、作用

不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。
    [](1) 窃听风险(eavesdropping):第三方可以获知通信内容。[/][](2) 篡改风险(tampering):第三方可以修改通信内容。[/][](3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。[/]
SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
    [](1) 所有信息都是加密传播,第三方无法窃听。[/][](2) 具有校验机制,一旦被篡改,通信双方会立刻发现。[/][](3) 配备身份证书,防止身份被冒充。[/]
互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得SSL/TLS协议变得异常复杂。二、历史互联网加密通信协议的历史,几乎与互联网一样长。1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。1996年,SSL 3.0版问世,得到大规模应用。1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。三、基本的运行过程SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。但是,这里有两个问题。(1)如何保证公钥不被篡改?解决方法:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。(2)公钥加密计算量太大,如何减少耗用的时间?解决方法:每一次对话(session),客户端和服务器端都生成一个”对话密钥”(session key),用它来加密信息。由于”对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密”对话密钥”本身,这样就减少了加密运算的消耗时间。因此,SSL/TLS协议的基本过程是这样的:[list=1][]客户端向服务器端索要并验证公钥。[/][]双方协商生成”对话密钥”。[/][]双方采用”对话密钥”进行加密通信。[/]上面过程的前两步,又称为”握手阶段”(handshake)。四、握手阶段的详细过程
be7363c.jpg
“握手阶段”涉及四次通信,我们一个个来看。需要注意的是,”握手阶段”的所有通信都是明文的。4.1 客户端发出请求(ClientHello)首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。在这一步,客户端主要向服务器提供以下信息。
    [](1) 支持的协议版本,比如TLS 1.0版。[/][](2) 一个客户端生成的随机数,稍后用于生成”对话密钥”。[/][](3) 支持的加密方法,比如RSA公钥加密。[/][](4) 支持的压缩方法。[/]
这里需要注意的是,客户端发送的信息之中不包括服务器的域名。也就是说,理论上服务器只能包含一个网站,否则会分不清应该向客户端提供哪一个网站的数字证书。这就是为什么通常一台服务器只能有一张数字证书的原因。对于虚拟主机的用户来说,这当然很不方便。2006年,TLS协议加入了一个Server Name Indication扩展,允许客户端向服务器提供它所请求的域名。4.2 服务器回应(SeverHello)服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。服务器的回应包含以下内容。
    [](1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。[/][](2) 一个服务器生成的随机数,稍后用于生成”对话密钥”。[/][](3) 确认使用的加密方法,比如RSA公钥加密。[/][](4) 服务器证书。[/]
除了上面这些信息,如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供”客户端证书”。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书。4.3 客户端回应客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送下面三项信息。
    [](1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。[/][](2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。[/][](3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。[/]
上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称”pre-master key”。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把”会话密钥”。至于为什么一定要用三个随机数,来生成”会话密钥”,dog250解释得很好:“不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。对于RSA密钥交换算法来说,pre-master-key本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。”此外,如果前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息。4.4 服务器的最后回应服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的”会话密钥”。然后,向客户端最后发送下面信息。
    [](1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。[/][](2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。[/]


至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用”会话密钥”加密内容。
0.png




五、参考链接

MicroSoft TechNet, SSL/TLS in Detail
Jeff Moser, The First Few Milliseconds of an HTTPS Connection
Wikipedia, Transport Layer Security
StackExchange, How does SSL work?



来源:阮一峰( @ruanyf )  
链接:www.ruanyifeng.com/blog/2014/02/ssl_tls.html

SQL注入渗透测试实例技术分享一枚

渗透测试pygain 发表了文章 • 9 个评论 • 1188 次浏览 • 2016-09-07 22:16 • 来自相关话题

首先不建议读者未经授权进行渗透测试,另即使授权也不允许对数据库里面的具体数据进行读取。因为我们都是新一代的高品质,高可信的安全人员,:)

下面是这个网站的注入点(找了好久,置于如何寻找百度上都是方法,SQL口令测试与软件测试均可)






工具:sqlmap 这是一款功能强大大数据库渗透软件,基于python。所以在运行该软件时先安装python 2.X.X版本(3.x.x无法使用)
sqlmap下载地址:






渗透过程:
1.在命令行模式下找到sqlmap文件夹中的sqlmap.py文件(cd ..退上级目录;cd sqlmap 进入文件夹;dir查看文件信息),在文件夹中运行“python sqlmap.py -h”出现帮助界面说明可以运行(python有的电脑需要打,有的不用)。
如图:






2.测试我们的渗透点是否可用
键入






会出现如下的情况







*在过程中会出现一些询问,如果看不懂不知如何选择的话在键入的结尾 --batch 从下图可以看到,显示出了当前网页id的传值方式为GET type为布尔;







紧接着服务器的操作系统和中间件版本号都显示出来 数据库是Mysql 5.0版本以上







 
3.我们来看看当前注入所涉及的数据库是什么吧
键入 








注意倒数第4行







4.进到数据看看有什么吧
键入 








其实这个软件的界面还是挺清爽的







由于是境外的网站,时间太久了,所以渗透了一会我就让它停止了,出现了库里的表(不算太多)







5.觉得CRM_Manager(客户管理人员)这个表还不错,动手了啊
键入:








出来了一些比较重要的东西






 
6.选择 Email,Name,Password,qq,skype 5个字段进行渗透
键入:






 
耐心等待......








因为是境外企业所以进行的较慢,遗憾的只爆除了管理员的账号和密码(为什么不加密。。。。)
 
到此这个小小的渗透算是结束了。
  查看全部
首先不建议读者未经授权进行渗透测试,另即使授权也不允许对数据库里面的具体数据进行读取。因为我们都是新一代的高品质,高可信的安全人员,:)

下面是这个网站的注入点(找了好久,置于如何寻找百度上都是方法,SQL口令测试与软件测试均可)

QQ截图20160907221024.png


工具:sqlmap 这是一款功能强大大数据库渗透软件,基于python。所以在运行该软件时先安装python 2.X.X版本(3.x.x无法使用)
sqlmap下载地址:

QQ截图20160907221434.png


渗透过程:
1.在命令行模式下找到sqlmap文件夹中的sqlmap.py文件(cd ..退上级目录;cd sqlmap 进入文件夹;dir查看文件信息),在文件夹中运行“python sqlmap.py -h”出现帮助界面说明可以运行(python有的电脑需要打,有的不用)。
如图:

QQ截图20160907212951.png


2.测试我们的渗透点是否可用
键入

QQ截图20160907221032.png


会出现如下的情况


2.png


*在过程中会出现一些询问,如果看不懂不知如何选择的话在键入的结尾 --batch 从下图可以看到,显示出了当前网页id的传值方式为GET type为布尔;


3.png


紧接着服务器的操作系统和中间件版本号都显示出来 数据库是Mysql 5.0版本以上


4.png


 
3.我们来看看当前注入所涉及的数据库是什么吧
键入 


QQ截图20160907221041.png



注意倒数第4行


5.png


4.进到数据看看有什么吧
键入 


QQ截图20160907221050.png



其实这个软件的界面还是挺清爽的


6.png


由于是境外的网站,时间太久了,所以渗透了一会我就让它停止了,出现了库里的表(不算太多)


7.png


5.觉得CRM_Manager(客户管理人员)这个表还不错,动手了啊
键入:


QQ截图20160907221100.png



出来了一些比较重要的东西

8.png


 
6.选择 Email,Name,Password,qq,skype 5个字段进行渗透
键入:

QQ截图20160907221110.png


 
耐心等待......


9.png



因为是境外企业所以进行的较慢,遗憾的只爆除了管理员的账号和密码(为什么不加密。。。。)
 
到此这个小小的渗透算是结束了。
 

我理解的面向对象(PHP)

编程Wolf_Rider 发表了文章 • 4 个评论 • 587 次浏览 • 2016-09-07 21:38 • 来自相关话题

什么是面向对象?
面向对象就是把一切事物看成一个对象(比如说,人,汽车,蛋糕,鼠标...),按照需求从这些物体中找出一些相同的一部分,把他们分到一个类中。要用的时候根据这个类新建一个对象,使用这个对象。
类是对象的抽象
对象是类的具体实例
--------------------------
例子:
我需要一个人的类,
人的特征有:
姓名,年龄,性别
人的动作有:
会打招呼
把上面的写成php代码是:
//声明people类
class people{
//成员变量(属性)
var $name;
var $age;
var $sex;
//成员函数(动作)
function say(){
echo "Hello!";
}
}
//我现在有一个人的类了,怎么用呢?
//现在新建一个名叫dong的对象
$dong=new people;
//给dong设置属性
$dong->name = 'dongxiang';
$dong->age = 18;
$dong->sex = 'nan';
//输出dong的属性
echo $dong->name;
echo '<br/>';
echo $dong->age;
echo '<br/>';
echo $dong->sex;
echo '<br/>';
//dong的动作
$dong->say();
==================
输出的结果:






大家自己练一练:
新建一个computer类:
属性有:
cpu、显卡、内存
动作有:
开机(输出Welcome)
  查看全部

什么是面向对象?
面向对象就是把一切事物看成一个对象(比如说,人,汽车,蛋糕,鼠标...),按照需求从这些物体中找出一些相同的一部分,把他们分到一个类中。要用的时候根据这个类新建一个对象,使用这个对象。
类是对象的抽象
对象是类的具体实例
--------------------------
例子:
我需要一个人的类,
人的特征有:
姓名,年龄,性别
人的动作有:
会打招呼
把上面的写成php代码是:
//声明people类
class people{
//成员变量(属性)
var $name;
var $age;
var $sex;
//成员函数(动作)
function say(){
echo "Hello!";
}
}
//我现在有一个人的类了,怎么用呢?
//现在新建一个名叫dong的对象
$dong=new people;
//给dong设置属性
$dong->name = 'dongxiang';
$dong->age = 18;
$dong->sex = 'nan';
//输出dong的属性
echo $dong->name;
echo '<br/>';
echo $dong->age;
echo '<br/>';
echo $dong->sex;
echo '<br/>';
//dong的动作
$dong->say();
==================
输出的结果:

QQ截图20160907213653.png


大家自己练一练:
新建一个computer类:
属性有:
cpu、显卡、内存
动作有:
开机(输出Welcome)
 

常用输出语句 echo print print_r var_dump()的区别

编程复活甲 发表了文章 • 3 个评论 • 617 次浏览 • 2016-09-07 17:45 • 来自相关话题

echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
var_dump()输出的信息是最丰富的,所以经常使用这个函数来调试程序。 查看全部
echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

print()
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

print_r()
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

var_dump()
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
var_dump()输出的信息是最丰富的,所以经常使用这个函数来调试程序。

那些年我们踩得那些shell坑(四)

SHELL脚本ttgo2 发表了文章 • 3 个评论 • 873 次浏览 • 2016-09-07 17:44 • 来自相关话题

0x01 系统环境
 
操作系统:redhat linux 6
shell环境:bash shell
 
0x02 坑位说明
 
$? 是用来判定上次grep的匹配是否成功,1表示失败,0表示成功,相信大家都掌握了。。
 
0x03 运行结果
 
[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# echo $?
0
[root@localhost ~]# cat /etc/passwd | grep root123
[root@localhost ~]# echo $?
1
[root@localhost ~]# 
 
0x04 问题出现
 
[root@localhost ~]# grep ????????
: ??????????
[root@localhost ~]# echo $?
2
 
 
什么情况下出现2个判断?明天公布答案。。。。
 
 
 
 
  查看全部
0x01 系统环境
 
操作系统:redhat linux 6
shell环境:bash shell
 
0x02 坑位说明
 
$? 是用来判定上次grep的匹配是否成功,1表示失败,0表示成功,相信大家都掌握了。。
 
0x03 运行结果
 
[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# echo $?
0
[root@localhost ~]# cat /etc/passwd | grep root123
[root@localhost ~]# echo $?
1
[root@localhost ~]# 
 
0x04 问题出现
 
[root@localhost ~]# grep ????????
: ??????????
[root@localhost ~]# echo $?
2

 
 
什么情况下出现2个判断?明天公布答案。。。。
 
 
 
 
 

知乎出现重大事故!!无数用户隐私可能被泄漏!

安全资讯admin 发表了文章 • 15 个评论 • 804 次浏览 • 2016-09-07 17:08 • 来自相关话题

今天下午,知乎粗大事了.......

今天下午约2点30分左右,三节课的布棉老师用自己的iPhone登录知乎,然后他就看到了如下让他震惊的界面——





如果你没能理解上图意味着什么,让我来告诉你——
[]这个账号不是布棉老师自己的;[/][]布棉老师在这里可以完全看到这个用户的私信;[/][]甚至是该用户的匿名回答,布棉老师也完整能看到。[/]

所以,这背后可能意味着大量知乎用户隐私信息的泄露!!!!

2点35,经我们测试确认,只有IOS端存在此问题,安卓则一切正常。

我们使用另一台iOS手机登录知乎,发现此时的知乎iOS端连加载都出现了问题,将WiFi换成了4G之后也没有什么动静。










而每次退出重新登录后,又会换成和刚刚那个陌生人又不一样的另外一个陌生人。这个时候的知乎,似乎已经完全乱套了





约2点45前后,知乎官方似乎采取了一些措施,串号现象不再出现,但在个人页中出现了一行代码报错,用户无法进行其它操作。





约2点50分左右,知乎官方疑似直接切断了服务器,整个知乎APP在IOS端已无法访问。





应该说,此次事故是一次极度严重的事故。
想象一下吧,你某天在知乎匿名发布的涉及到老东家诸多内幕信息的回答明天突然被人爆出,会对你带来怎样的影响?
包括,你所有的知乎私信都会被人看到,这又意味着什么?
但现在,这很可能已经发生……
--------------------------------------------------------------------------------
关于此次事故,我们请教了部分相关行业人士,根据经验他们给出的分析和解读是:
其一,从事故表现来看,此次事故出现的问题是账号串号和数据库的问题。其中,串号问题严重泄露了用户隐私,如果在接下来两天中有匿名回答和私信被公开,似乎知乎难辞其咎。
其二,事故发生后知乎直接切断了服务器,看起来,似乎是数据库没有备份?如果有备份,则可以直接切换到备份服务器,而不至于粗暴切断影响普通用户的正常使用。
其三,出现此类问题,要么是内部误操作,要么是外部攻击。看起来前者的可能性更大,假如是真,背后可能影射出的是知乎内部的管理和操作流程方面的问题,也可能会导致内部相关工作人员受到较严厉的处罚。

当然,知乎是用python语言写的,这个属于纯技术问题,产品狗运营猫通常碰到这种情况会非常抓狂,所以特别希望技术牛人能把这个事件解读解读,让我们也能理解一下。

无独有偶,早在2013年2月份的时候,新浪微博就曾出现过串号的漏洞问题,新浪公司总编辑陈彤的个人微博在2013年2月10日凌晨0点30分左右出现异常微博,疑似部分非陈彤发布的内容出现在其微博内容中。
2月10日消息2月10日凌晨0点30分左右,新浪微博平台出现疑似串号漏洞,新浪公司总编辑陈彤的微博出现异常。

据了解,新浪公司总编辑陈彤的个人微博在2月10日凌晨0点30分左右出现异常微博,疑似部分非陈彤发布的内容出现在其微博内容中。

0点35分左右,陈彤的个人微博出现短暂无法访问,疑似帐号被删除。
0点40分左右,陈彤的微博恢复访问,串号安全漏洞仍然存在。
0点50分左右,陈彤的微博持续出现帐号被删,无法访问。

无论如何,接下来知乎一定会面对诸多用户的质疑,对于如何回复,这也似乎是一道多选题:
[]假装不知道。。。[/][]有用户来问,就说技术傻逼[/][]挂了吗?我去看看[/][]跟用户说:一定是竞争对手干的[/][]这只是我们在测试[/][]诚恳道歉,公布所有内情内幕[/]

我们不妨来拭目以待,看看知乎会如何回应?

转载:三节课微信公众号(ID: sanjieke)处。
  查看全部
640.jpg


今天下午,知乎粗大事了.......

今天下午约2点30分左右,三节课的布棉老师用自己的iPhone登录知乎,然后他就看到了如下让他震惊的界面——

1.jpg

如果你没能理解上图意味着什么,让我来告诉你——
    []这个账号不是布棉老师自己的;[/][]布棉老师在这里可以完全看到这个用户的私信;[/][]甚至是该用户的匿名回答,布棉老师也完整能看到。[/]


所以,这背后可能意味着大量知乎用户隐私信息的泄露!!!!

2点35,经我们测试确认,只有IOS端存在此问题,安卓则一切正常。

我们使用另一台iOS手机登录知乎,发现此时的知乎iOS端连加载都出现了问题,将WiFi换成了4G之后也没有什么动静。

2.jpg


3.jpg

而每次退出重新登录后,又会换成和刚刚那个陌生人又不一样的另外一个陌生人。这个时候的知乎,似乎已经完全乱套了

4.jpg

约2点45前后,知乎官方似乎采取了一些措施,串号现象不再出现,但在个人页中出现了一行代码报错,用户无法进行其它操作。

5.jpg

约2点50分左右,知乎官方疑似直接切断了服务器,整个知乎APP在IOS端已无法访问。

6.jpg

应该说,此次事故是一次极度严重的事故。
想象一下吧,你某天在知乎匿名发布的涉及到老东家诸多内幕信息的回答明天突然被人爆出,会对你带来怎样的影响?
包括,你所有的知乎私信都会被人看到,这又意味着什么?
但现在,这很可能已经发生……
--------------------------------------------------------------------------------
关于此次事故,我们请教了部分相关行业人士,根据经验他们给出的分析和解读是:
其一,从事故表现来看,此次事故出现的问题是账号串号和数据库的问题。其中,串号问题严重泄露了用户隐私,如果在接下来两天中有匿名回答和私信被公开,似乎知乎难辞其咎。
其二,事故发生后知乎直接切断了服务器,看起来,似乎是数据库没有备份?如果有备份,则可以直接切换到备份服务器,而不至于粗暴切断影响普通用户的正常使用。
其三,出现此类问题,要么是内部误操作,要么是外部攻击。看起来前者的可能性更大,假如是真,背后可能影射出的是知乎内部的管理和操作流程方面的问题,也可能会导致内部相关工作人员受到较严厉的处罚。

当然,知乎是用python语言写的,这个属于纯技术问题,产品狗运营猫通常碰到这种情况会非常抓狂,所以特别希望技术牛人能把这个事件解读解读,让我们也能理解一下。

无独有偶,早在2013年2月份的时候,新浪微博就曾出现过串号的漏洞问题,新浪公司总编辑陈彤的个人微博在2013年2月10日凌晨0点30分左右出现异常微博,疑似部分非陈彤发布的内容出现在其微博内容中。
2月10日消息2月10日凌晨0点30分左右,新浪微博平台出现疑似串号漏洞,新浪公司总编辑陈彤的微博出现异常。

据了解,新浪公司总编辑陈彤的个人微博在2月10日凌晨0点30分左右出现异常微博,疑似部分非陈彤发布的内容出现在其微博内容中。

0点35分左右,陈彤的个人微博出现短暂无法访问,疑似帐号被删除。
0点40分左右,陈彤的微博恢复访问,串号安全漏洞仍然存在。
0点50分左右,陈彤的微博持续出现帐号被删,无法访问。

无论如何,接下来知乎一定会面对诸多用户的质疑,对于如何回复,这也似乎是一道多选题:
    []假装不知道。。。[/][]有用户来问,就说技术傻逼[/][]挂了吗?我去看看[/][]跟用户说:一定是竞争对手干的[/][]这只是我们在测试[/][]诚恳道歉,公布所有内情内幕[/]


我们不妨来拭目以待,看看知乎会如何回应?

转载:三节课微信公众号(ID: sanjieke)处。