内容简介:昨天的不過,做為一名身經百戰的老士官長,遇到再惡劣的狀況也要有對策,這點小挑戰嚇不倒我的~ 以下是我所想到無 PowerShell 可用時的替代解法:如果很幸運該台 Windows 有裝 Telnet Client 的話(預設未安裝,需額外勾選),telnet.exe 是我心中首選。理由是 telnet 是 IT 人員熟悉的常用工具,未涉及程式語言較不易引發資安機制的過當反應。(當然,用 telnet 一樣可以做壞事,未必比跑程式安全,但「社會觀感」這玩意兒很難解釋)
昨天的 野外求生系列 - 無工具 WebApi 徒手測試 一文得到不少迴響,我才知道被困在荒島上的工程師還蠻多的 XD,而其中一則讓我震驚的消息是 - 在一些更嚴格的資安規範之下,PowerShell 是被禁用的。
不過,做為一名身經百戰的老士官長,遇到再惡劣的狀況也要有對策,這點小挑戰嚇不倒我的~ 以下是我所想到無 PowerShell 可用時的替代解法:
B 計劃 telnet
如果很幸運該台 Windows 有裝 Telnet Client 的話(預設未安裝,需額外勾選),telnet.exe 是我心中首選。理由是 telnet 是 IT 人員熟悉的常用工具,未涉及程式語言較不易引發資安機制的過當反應。(當然,用 telnet 一樣可以做壞事,未必比跑程式安全,但「社會觀感」這玩意兒很難解釋)
做法是準備一個 ApiTest-1.txt 檔案做好 HTTP POST Request 的原始內容以模擬瀏覽器行為,像是這個樣子:(Content-Length 為 encKey=9527.... 字串的長度)
POST http://localhost:62505/codecapi/encryptstring HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: */* Host: localhost:62505 Connection: close Content-Length: 30 encKey=9527&rawText=Darkthread
請 OP 人員操作時,先下指令 type ApiTest-1.txt | clip,將上述內容存入剪貼簿,接著 telnet localhost 62505 連上 IIS 主機,連線後畫面會變黑,此時按滑鼠右鍵貼上放在剪貼簿的內容,即可得到 IIS 回應。實際操作如下:
若參數要採 JSON 方式上傳,則 Content-Type 改為 application/json 即可:
POST http://localhost:62505/codecapi/batchdecryptdata HTTP/1.1
Content-Type: application/json
Accept: */*
Host: localhost:62505
Connection: close
Content-Length: 67
{encKey:"9527",encData:["aNcjoi5QprU=","Ql9bsv6d1BVeq/9icNTcUQ=="]}
一樣可以測試成功:
至於 Content-Length 值,除了自己數字元,也可讓 Notepad++ 等文字編輯器幫忙算:
如果懶得徒手編輯 Request 內文,也可用 Chrome F12 或 Fiddler 側錄 POST 傳送封包抄來用。
C 計劃 IE
由於 telnet.exe 不是預設安裝項目,萬一不幸該 Windows 沒有且無法申請安裝的話,連 IE 都沒得用的機率應該很,就用 IE 吧!
準備一段 JavaScript:
var xhr=new XMLHttpRequest();
xhr.open("POST","http://localhost:62505/codecapi/encryptstring",false);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("encKey=9527&rawText=Darkthread");
console.log(xhr.getAllResponseHeaders());
console.log(xhr.responseText);
開啟 IE 先連上該網站不存在的網址使之出現 HTTP 404 畫面,按 F12 開啟開發者 工具 並切到 Console 主控台進行操作。先進入同網站 HTTP 404 畫面的用意是與待測試 WebAPI URL 形成同一網域來源,避免 XHR 請求違反 同源政策(Same-Origin Policy) 被阻擋。(我用 IE11 模擬測試,預估同做法在 IE8 亦可行,如有錯請指正)
如上圖所示,透過 IE XMLHttpRequest 可成功送出 WebAPI POST 請求。
以 JSON 傳送參數的做法大同小異:
var xhr=new XMLHttpRequest();
xhr.open("POST","http://localhost:62505/codecapi/batchdecryptdata",false);
xhr.setRequestHeader("Content-Type","application/json");
xhr.send('{encKey:"9527",encData:["aNcjoi5QprU=","Ql9bsv6d1BVeq/9icNTcUQ=="]}');
console.log(xhr.getAllResponseHeaders());
console.log(xhr.responseText);
D 計劃 VBScript
如果線上環境禁用 PowerShell 卻沒封鎖 VBScript 的話? (PowerShell 因危險禁用,寫 VBScript 卻可以? 感覺沒道理呀? 但每一條奇怪規矩的背後都有故事,一切就回歸黑格爾的名言「凡存在必合理」吧!)
C 計劃可以改成 VBScript 版:
Dim xhr
Set xhr = CreateObject("Microsoft.XmlHttp")
Call xhr.open("POST","http://localhost:62505/codecapi/encryptstring",false)
Call xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
Call xhr.send("encKey=9527&rawText=Darkthread")
WScript.Echo(xhr.getAllResponseHeaders())
WScript.Echo(xhr.responseText)
測試成功。
再補上三種替代方案,祝大家荒野求生愉快~
Considering the case that PowerShell is prohibited in production environment, this article provider some alternative ways to test web api with built-in tool, including telnet, IE and VBScript.
以上所述就是小编给大家介绍的《野外求生系列 - 無工具 WebApi 徒手測試 Part 2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Essential ActionScript 3.0
Colin Moock / Adobe Dev Library / June 22, 2007 / $34.64
ActionScript 3.0 is a huge upgrade to Flash's programming language. The enhancements to ActionScript's performance, feature set, ease of use, cleanliness, and sophistication are considerable. Essentia......一起来看看 《Essential ActionScript 3.0》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
正则表达式在线测试
正则表达式在线测试