日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

测试php数字范围_你不知道的接口测试之拾遗

發(fā)布時(shí)間:2025/3/19 php 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试php数字范围_你不知道的接口测试之拾遗 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

除了前面文章提到的測(cè)試之外,還有一些測(cè)試也是非常有必要進(jìn)行的,當(dāng)然他們執(zhí)行的頻率沒(méi)有那么高。

01

sql注入

我們?cè)趌ogin.php中是模擬的查詢數(shù)據(jù)庫(kù),真正的查詢過(guò)程,很可能是由一下sql語(yǔ)句完成的:

select * from user where username='zhq' and pwd='123456'

但是由于,我們的‘zhq’,‘123456’是由參數(shù)傳遞過(guò)來(lái)的一個(gè)變量,一些調(diào)皮的人就可以通過(guò)這兩個(gè)參數(shù)做文章了,比如估計(jì)把zhq傳遞成zhq'-- ,那么到了程序里面執(zhí)行sql就變成了:

select * from user where username='zhq'-- ‘ and pwd='123456'

那么只要是這個(gè)用戶名存在,就會(huì)返回?cái)?shù)據(jù)!!!

對(duì)付這種漏洞,開(kāi)發(fā)同學(xué)是有辦法的,比如使用功能完畢的框架,開(kāi)啟相應(yīng)的模塊等等,這里不多做說(shuō)明了。

02

并發(fā)

我們先開(kāi)發(fā)一個(gè)購(gòu)物的接口,這個(gè)接口實(shí)現(xiàn)的功能是,每調(diào)用一次,商品的庫(kù)存就會(huì)減少1個(gè)單位。


我們使用一個(gè)data.txt文件代替數(shù)據(jù)庫(kù),里面只防止一個(gè)數(shù)字,比如1000,然后編寫(xiě)一個(gè)文件buy.php代碼如下:

<?php // 告訴瀏覽器返回為json類型 header('Content-Type:application/json; charset=utf-8'); $filename = "./data.txt"; $handle = fopen($filename, "r"); //通過(guò)filesize獲得文件大小,將整個(gè)文件一下子讀到一個(gè)字符串中 $contents = fread($handle, filesize ($filename)); fclose($handle); $handle = fopen($filename, "w"); $contents = $contents -1; fwrite($handle,$contents); fclose($handle); // 組織的數(shù)據(jù) $data = array( 'code' => 200, 'msg' => '購(gòu)買(mǎi)成功', 'result' => array( 'num' => $contents ) ); // PHP數(shù)組轉(zhuǎn)json $rst = json_encode($data,JSON_UNESCAPED_UNICODE); // 打印結(jié)果????echo?$rst;

以上代碼,就是讀取data.txt中的數(shù)字,做-1操作,我們正常調(diào)用結(jié)果如下:

{"code":200,"msg":"購(gòu)買(mǎi)成功","result":{"num":999}}

但是如果這個(gè)時(shí)候,突然有10臺(tái)電腦,在一剎那間同時(shí)訪問(wèn),這個(gè)結(jié)果如何呢,data.txt中數(shù)字還會(huì)是990嗎?下面我們來(lái)模擬這個(gè)操作:

  • 把data.txt中的文字修改回1000

  • 下載并且啟動(dòng)jmeter軟件(百度一下如何安裝和配置)

  • 在測(cè)試計(jì)劃中創(chuàng)建一個(gè)線程組,設(shè)置10個(gè)線程,5秒鐘啟動(dòng):

  • 在線程中添加一個(gè)http請(qǐng)求

  • 給線程組添加一個(gè)同步定時(shí)器,設(shè)置超時(shí)時(shí)間是10000毫秒:

  • 給線程組添加一個(gè)一個(gè)查看結(jié)果樹(shù)的監(jiān)聽(tīng)器:

完成以上操作之后,我們將鼠標(biāo)選中查看結(jié)果樹(shù),然后點(diǎn)擊工具欄運(yùn)行按鈕,查看最后一個(gè)請(qǐng)求返回的結(jié)果:

我們可以看到,最后返回的庫(kù)存數(shù)字竟然是993(這個(gè)數(shù)字有可能會(huì)變化),很明顯庫(kù)存并沒(méi)有按照我們的預(yù)期減少10個(gè)單位,變成990 !!!!

我們來(lái)強(qiáng)行解釋一波這個(gè)錯(cuò)誤是怎樣發(fā)生的:

當(dāng)一個(gè)用戶來(lái)購(gòu)買(mǎi)商品的時(shí)候,老板還沒(méi)有做減庫(kù)存處理(-1的操作),來(lái)了第二個(gè)人,加塞進(jìn)來(lái),這個(gè)時(shí)候老板告訴他的自然是沒(méi)有更新過(guò)的庫(kù)存!

當(dāng)然開(kāi)發(fā)同學(xué)會(huì)有解決辦法,比如讓購(gòu)物的顧客拍個(gè)隊(duì),順序執(zhí)行。

以上就是本篇的兩個(gè)方面,在實(shí)際測(cè)試過(guò)程中,測(cè)試的頻率要明顯低于功能,但卻很重要,當(dāng)然開(kāi)發(fā)同學(xué)也更會(huì)用心去做,所以出現(xiàn)錯(cuò)誤的機(jī)會(huì)是很少的。

鏈接:https://www.jianshu.com/p/ee6b0d4d17bc

本文為51Testing經(jīng)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載文章所包含的文字來(lái)源于作者。如因內(nèi)容或版權(quán)等問(wèn)題,請(qǐng)聯(lián)系51Testing進(jìn)行刪除

總結(jié)

以上是生活随笔為你收集整理的测试php数字范围_你不知道的接口测试之拾遗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。