国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 额济纳旗| 石狮市| 铁岭县| 定结县| 饶平县| 米易县| 外汇| 景宁| 楚雄市| 竹溪县| 浦县| 靖州| 文成县| 申扎县| 锡林浩特市| 浙江省| 苗栗市| 长垣县| 天水市| 中阳县| 金乡县| 石柱| 棋牌| 十堰市| 新津县| 柳江县| 孟州市| 嘉善县| 衡山县| 阳谷县| 东宁县| 淮北市| 甘孜| 沾益县| 咸宁市| 梨树县| 万盛区| 乃东县| 修文县| 兴海县| 腾冲县|