国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

Php關(guān)于二進(jìn)制安全詳解

2020-03-22 18:48:15
字體:
供稿:網(wǎng)友
1. php的二進(jìn)制安全 binary-safe

php的內(nèi)部函數(shù)在操作二進(jìn)制數(shù)據(jù)時(shí)能保證達(dá)到預(yù)期的結(jié)果,例如 str_replace、stristr、strcmp 等函數(shù),我們就說這些函數(shù)是二進(jìn)制安全的。

下面通過 c 語言 和 php 的對(duì)比 來看 他們對(duì)二進(jìn)制數(shù)據(jù)的處理
#include "stdio.h"#include "string.h"int main(){char a[] = "aa/0b";char b[] = "aa/0c";printf("%d/n", strcmp(a, b));printf("%ld/n", strlen(a));}/* 0 2 */
可以看出來 c語言 "/0" 是字符串結(jié)束,所以認(rèn)為 "aa/0b' 和 "aa/0c" 是一樣的,長(zhǎng)度為2 拋棄了 "/0b" 和 "/0c" .
<?php/** * Created by PhpStorm. * User: leon * Date: 17/11/6 * Time: 上午10:24 */    $a = "aa/0b";    $b = "aa/0c";    $c = "/0/0";    $d = 'a';    $e = 'a';    var_dump(strcmp($a, $b));    var_dump(strcmp($c, $d));    var_dump(strlen($a));    var_dump(strlen($c));# res : int(-1) int(0) int(4) int(2)
php "aa/0b" 和 "aa/0c" 是不同的 ,并且長(zhǎng)度為42. php實(shí)現(xiàn)二進(jìn)制安全的原理

PHP中字符串通過 zend_string 表示:
這里寫圖片描述

PHP中 變量 zend_html' target='_blank'>value 表示:
這里寫圖片描述

  • gc: 變量引用信息,比如當(dāng)前value的引用數(shù),所有用到引用計(jì)數(shù)的變量類型都會(huì)有這個(gè)結(jié)構(gòu),3.1節(jié)會(huì)詳細(xì)分析

  • h: 哈希值,數(shù)組中計(jì)算索引時(shí)會(huì)用到

  • len: 字符串長(zhǎng)度,通過這個(gè)值保證二進(jìn)制安全

  • val: 字符串內(nèi)容,變長(zhǎng)struct,分配時(shí)按len長(zhǎng)度申請(qǐng)內(nèi)存


  • len: 字符串長(zhǎng)度,通過這個(gè)值保證二進(jìn)制安全 ,它不需要像C 一樣用喲 ‘/0’ 結(jié)尾符來判斷字符串的結(jié)束,而是通過len

3.SDS

C : 以 ’/0’ 為結(jié)束符,所以c的字符串不能包含文本,圖片、音頻、視頻、壓縮文件這樣的二進(jìn)制數(shù)據(jù)。
Php : 記錄 len
SDS : simple dynamic string 簡(jiǎn)單動(dòng)態(tài)字符串的抽象類型,應(yīng)用到字符表示:

SDS 數(shù)據(jù)結(jié)構(gòu):

struct sdshdr {    # 記錄 buf 數(shù)組中已使用字節(jié)的數(shù)量    # 等于 SDS 所保存字符串的長(zhǎng)度    int len;    # 記錄 buf 數(shù)組中未使用字節(jié)的數(shù)量    int free;    # 字節(jié)數(shù)組,用于保存字符串    char buf[];};

redis 的結(jié)構(gòu)定義中也記錄了SDS所保存字符串的長(zhǎng)度,通過這個(gè)值保證二進(jìn)制安全,SDS 的 API 都會(huì)用 字符串的len 屬性來判斷字符串是否結(jié)束。

相關(guān)推薦:

php二進(jìn)制安全的含義

php的二進(jìn)制安全_PHP教程

PHP函數(shù)二進(jìn)制安全有關(guān)問題

以上就是Php關(guān)于二進(jìn)制安全詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 哈巴河县| 南江县| 眉山市| 郧西县| 兴国县| 栖霞市| 武城县| 库尔勒市| 吉安县| 和田县| 忻州市| 平度市| 神农架林区| 固阳县| 泽州县| 河曲县| 乌拉特中旗| 井研县| 铜梁县| 个旧市| 稻城县| 沾化县| 黄平县| 松江区| 年辖:市辖区| 永川市| 清涧县| 区。| 习水县| 井研县| 炎陵县| 河南省| 东辽县| 临江市| 莎车县| 四川省| 承德县| 永嘉县| 武城县| 江津市| 博白县|