php伪协议,及其它网络安全相关知识

<1>php伪协议

1.对更改php.ini文件中‘allow_url_fopen‘和’allow_url_include’的理解

  • ini是(initial’初始化‘)的缩写,ini文件用来对操作系统或特定程序初始化或进行参数设置,也就是说php.ini是PHP的一个配置文件。
  • php.ini中有’allow_url_fopen‘和’allow_url_include’。前者的意思是说是否将URL作为文件处理,后者的意思是是否允许include/require打开URL作为文件处理。

1.1对PHP伪协议名字由来的理解

php上的协议是一种自定协议不具有广泛性所以叫伪协议

2.URL的标准格式

  • URL的标准格式为protocol://hostname[:port]/path[?query#fragment]

    举例:”http://www.baidu.com/movie/movieshow?id=234&number=1314#name“

    • protocol是指网络传输协议(如:http、https、file等)。
    • hostname是指存放资源的与域名、主机名或IP地址。
    • port是指端口,有时用默认端口所以不显示。
    • path是指一个主机上的一个目录或者文件地址,它决定了服务器如何处理这个请求。
    • query从?到#之间是参数(也叫搜索部分),参数之间用&来间隔。
    • fragment用于指定网络资源中的片段,搜索部分搜索出的信息多种多样,通过fragment可以明确指出哪些信息是我们需要

    3.对php.ini中的部分语句改变的必要性的理解

  • php.ini的作用是是指导php解析器对php语句的处理方式

  • 将’allow_url_fopen‘改为’allow_url_fopen=on‘;'allow_url_include’改为’allow_url-include=on‘让计算机可以将URL处理 。

    4.对php://input为这种语法的必要性的理解

    php内置遵循URL的风格的封装协议,只有这种格式计算机才能听懂,并执行命令

    5.php://input

    用于查看源码,同时是要查看未压缩文件的只读流(只读流是说只能进行读操作的数据)

    条件:allow_url_fopen=off/on ;allow_url_include=on

    1.可用于给某些变量赋值使用

    2.总的来说用于执行php代码

    3.在POST访问中访问POST的DATA 部分

    4.也可用于一句话木马的注入

    6.base64

    对base64与ASCII码转换的理解。

    • base64是用64个打印字符表示二进制数据。
    • 64个打印字符对应64个数字,所以只需6个bit就能表示任意一个打印字符,而一个byte的8个bit有两个就要一直表示0。
    • 三个传统字节可以用四个base64字符来表示。
    • 当只有一个传统字节时,用两个base64字符表示多余的bit用0来填补,同理三个也是一样的情况。
    • 详细讲解

    7.其它php伪协议

    1.php://filter

    • 条件:allow_url_fopen=off/on;allow_url_include=off/on

    • 常用于读取php的源码

    • 进行base64编码输出,不然会当作php代码执行

    • http://127.0.0.1/<文件路径>?file=php://filter/read=<读链的过滤器>.base63-encode/resource=<要过滤的数据流>

    2.另一些php://协议

    php://stdin、php://memory、php://temp等


    <2>其它网络安全相关知识

(1)弱比较

1.对强类型与弱类型语言的理解

​ 1.强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。

​ 2.弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言

2.对“三等号”“双等号”的区别的理解

1.===是恒等,两个数要类型相同且数值相同

2.==是比较运算,不会检查两个数的类型

3.比较操作

数字和字符串比较,php会把字符串转换成数字再比较。php转换原则是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0

(2)md5

1.md5是什么

有人认为是一种加密的方式,因为md5将原文件改变。但是也有人不认为,因为md5加密出的文件无法复原。

2.实现的方法(笼统)

一串数据占用的位数与512bit取余,如果余数不是448,则要补位(部位的方式为一位是1剩下的全补成零)。之后再将没有补位前的数据长度用64位表示。装入***标准幻数***。此时数据长度为(n+1)512,之后将每一个512分为16个32子分位,进行四轮运算,最后得出一个128位的散列值。

(3)0exxx恒为零的原因

0exxx是指数表达形式,其中e前面是指数的实数位,而e后面是指数表达式的指数位,进行科学计数法转换以后,0无论乘多少次方都为零,所以0exxx的结果是0

你可能感兴趣的:(php)