當前位置:首頁 » 編程語言 » phpasmx

phpasmx

發布時間: 2023-09-05 07:22:59

A. 我把公司網站代碼在伺服器上拖到本地運行,在瀏覽器打開是空白頁面怎麼通過修改代碼,能在本地訪問

前幾天,工作上有一新需求,需要前端web頁面非同步調用後台的Webservice方法返回信息。實現方法有多種,本例採用jQuery+Ajax,完成後,在本地調試了一切ok,但是部署到伺服器上以後就出現問題了,後台服務調用沒有響應,怎麼回事看代碼沒怎麼改動,唯一修改的地方就是jQuery的ajax方法中的url地址。難道是這里的問題,經過檢查和調試,發現原來是同源策略在作怪,我們知道,javaScript或jQuery是在Web前端開發中經常使用的動態腳本技術。在JavaScript中,有一個很重要的安全性限制,被稱為逗Same- Origin Policy地(同源策略)。這一策略對於JavaScript代碼能夠訪問的頁面內容做了很重要的限制,即JavaScript只能訪問與包含它的文檔或腳本 在同一域名下的內容。不同域名下的腳本不能互相訪問,即便是子域也不行。
但是有時候又不可避免地需要進行跨域操作,這時候逗同源策略地就是一個限制了,怎麼辦呢看採用JSONP跨域GET請求是一個常用的解決方案,下面我們來看一下JSONP跨域是如何實現的,並探討下JSONP跨域的原理。

這里提到了JSONP,那有人就問了,它同JSON有什麼區別不同和區別呢,接下我們就來看看,網路有以下說明:

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成(網路傳輸速度快)。

JSONP(JSON with Padding)是JSON的 一種逗使用模式地,可用於解決主流瀏覽器的跨域數據訪問的問題。由於同源策略,一般來說位於 server1 的網頁無法與不是 server1的伺服器溝通,而 HTML 的<script> 元素是一個例外。利用 <script> 元素的這個開放策略,網頁可以得到從其他來源動態產生的 JSON 資料,而這種使用模式就是所謂的 JSONP。用 JSONP 抓到的資料並不是 JSON,而是任意的JavaScript,用 JavaScript 直譯器執行而不是用 JSON 解析器解析。

到這里,應該明白了,JSON是一種輕量級的數據交換格式,像xml一樣,是用來描述數據間的。JSONP是一種使用JSON數據的方式,返回的不是JSON對象,是包含JSON對象的javaScript腳本。

那JSONP是如何工作的呢,我們知道,由於同源策略的限制,XmlHttpRequest只允許請求當前源(域名、協議、埠)的資源。若要跨域請求出於安全性考慮是不行的,但是我們發現,Web頁面上調用js文件時則不受是否跨域的影響,而且擁有地src地這個屬性的標簽都擁有跨域的能力,比如<script>、<img>、<iframe>,這時候,聰明的程序猿就想到了變通的方法,如果要進行跨域請求, 通過使用html的script標記來進行跨域請求,並在響應中返回要執行的script代碼,其中可以直接使用JSON傳遞 javascript對象。即在跨域的服務端生成JSON數據,然後包裝成script腳本回傳,這不就突破同源策略的限制,解決了跨域訪問的問題了么。

下面我們就看下怎麼實現:
前端代碼:

function CallWebServiceByJsonp() { $("#SubEquipmentDetails").html(''); $.ajax({ type: "GET", cache: false, url: "servername/webservice/webservice.asmx/GetSingleInfo", data: { strCparent: $("#Equipment_ID").val() }, dataType: "jsonp", //jsonp: "callback", jsonpCallback: "OnGetMemberSuccessByjsonp" }); } function OnGetMemberSuccessByjsonp(data) { //處理data alert(data); } 後端的WebService代碼:
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] public void GetSingleInfo(string strCparent) { string ret = string.Empty; HttpContext.Current.Response.ContentType = "application/json;charset=utf-8"; string jsonCallBackFunName = HttpContext.Current.Request.Params["callback"].ToString(); //string jsonCallBackFunName1 = HttpContext.Current.Request.QueryString["callback"].Trim(); //上面代碼必須 //中間代碼執行自己的業務操作,可返回自己的任意信息(多數據類型) BLL.equipment eq_bll = new BLL.equipment(); List<Model.equipment> equipmentList = new List<Model.equipment>(); equipmentList = eq_bll.GetModelEquimentList(strCparent); ret = JsonConvert.SerializeObject(equipmentList); //下面代碼必須 HttpContext.Current.Response.Write(string.Format("{0}({1})", jsonCallBackFunName, ret)); HttpContext.Current.Response.End(); } 如上所示,前端的CallWebServiceByJsonp方法採用jQuery的ajax方法調用後端的Web服務GetSingleInfo方法,後台的GetSingleInfo方法,使用前端的回調方法OnGetMemberSuccessByjsonp包裝後台的業務操作的JSON對象,返回給前端一段javascript片段執行。巧妙的解決了跨域訪問問題。

JSONP的缺點:

JSONP不提供錯誤處理。如果動態插入的代碼正常運行,你可以得到返回,但是如果失敗了,那麼什麼都不會發生。

以上內容簡單給大家介紹了JSONP解決Ajax跨域訪問問題的思路,希望能夠幫助到大家,如果大家有疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對腳本之家網站的支持!

B. 文件上傳漏洞有哪些挖掘思路

文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳webshell的其他非常規挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。
1、基礎知識:
要深入了解文件上傳,必須了解上傳屬性、常見文件的結構、圖形處理函數等內容。
1) 報文特點:
觀察文件上傳報文的特點:
Header中Content-Type特徵有二:
1.multipart/form-data(form表單的enctype屬性,規定為二進制數據)
2.boundary字元串(作用為分隔符,以區分POST數據)
POST內容特徵有五:
1.Content-Disposition:form-data
2. name:input表單名
3.filename:文件名
4.Content-Type:定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件;
5.boundary:Content-Type的值前面加了兩個---

2) 常見校驗規則
現存常用的上傳校驗規則無非下面幾類:
1.客戶端javascript校驗(後綴名)
2.文件頭content-type欄位校驗(image/gif):附帶參數
4.後綴名黑/白名單校驗:擴展名
5.文件內容頭校驗:GIF89a
6.文件內容校驗:文件信息,二次渲染
7.自定義正則校驗
3)一個澄清
文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示「圖片無法顯示」;或者我們上傳的是jpg文件,但裡面混有shell腳本,若被解析為php文件也會執行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執行成功。
還是回到安全的本質,上傳是「輸入」,那文件解析就是「輸出」,任何漏洞挖掘都需要結合輸入+輸出。

2、繞過技巧:
這里匯總一些實戰中較常用的繞過技巧:
1)後綴名黑名單
以下替換後綴也可以解析為shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系統的文件命名規則:
.php.,.php空格,.php:1.jpg,.php::$DATA等
這些後綴的文件會被windows系統自動去掉不符合規則符號後面的內容,從而只留下.php。
2)後綴名白名單
除了結合各種伺服器解析特性,較常用的是Null Byte Injection空位元組注入,插入空位元組值的原因是某些應用程序伺服器腳本語言使用c/c++庫來檢查文件名和內容。在C/C ++中,一行以/00結尾或稱為NullByte。因此,只要解釋器在字元串的末尾看到一個空位元組,就會停止讀取,認為它已經到達字元串的末尾。
如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然後上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字元串視圖中找到文件名。查看相應的Hex表,並將41('A')替換為00(為空位元組)。結果字元串變為Happy.php(空).jpeg。由於php解釋器在內部使用C語言庫,它將停止讀取Happy.php後的文件名,文件將保存為Happy.php。
另一種繞過白名單的方法是使用雙後綴:shell.php.jpg。

C. 腳本語言分幾種

腳本語言 有很多種,
一、瀏覽器中的腳本語言主要就是JavaScript了,之前還有過別的比如vbscript 以及 flash動畫中用到的 ActionScript等。
二、非瀏覽器中的腳本語言,或者說是服務端的腳本語言,有的用在web伺服器端,比如php,asp,JavaScript(也可以用在伺服器)還有可以內嵌到應用程序中的,因為程序編譯後是不容易改變的,如果想在程序編譯好後需經常調整程序的行為,比如游戲伺服器,經常會調整任務獎勵,邏輯演算法等的會在游戲服務端內嵌入腳本語言 lua等。
三、腳本語言還有很多很多,你提到的 cgi不是語言,這是一種擴展web伺服器的方法吧,通過cgi提供程序可以讓web伺服器提供更多的功能,php就是通過cgi的方式提供給web伺服器的,你也可以用c寫一個cgi模塊讓web伺服器去調用。
四、系統中也會有腳本語言,比如windows的 bat文件就是腳本語言編寫,你用記事本寫入命令,然後另存為bat文件 滑鼠雙擊就可以執行,還有 vbs,linux也有自己腳本語言。
腳本語言就是 不用編譯的語言,他是由解釋器讀一行執行一行的,性能很差但靈活性很高這就是他的特點,一般用在web,瀏覽器,或者用嵌入到c c++ c#等編譯程序中來執行一些簡單的需要經常變動邏輯配置。
與腳本語言不同的就是編譯語言了,C C++ C# java 等這些 不編譯是不能運行的,必須要將其編譯為二進制或者是特定平台的中間碼才能運行,java是語言也是平台可以說java運行在Java平台上(Java虛擬機),C#是語言運行在net或netcore平台。c c++直接編譯為二進制運行。

D. 腳本語言有哪些

  • 腳本語言:腳本語言又被稱為擴建的語言,或者動態語言,是一種編程語言,用來控制軟體應用程序,腳本通常以文本(如ASCII)保存,只在被調用時進行解釋或編譯。

  • 語言分類:

  1. Shell腳本:此類腳本用於自動化工作控制,即啟動和控制系統程序的行為。大多的腳本語言解釋器也同時是命令行界面,如Unix shell和MS-DOS COMMAND.COM。其他如AppleScript,可以為系統增加腳本環境,但沒有命令行界面。具體分類有:

    4NT

    AppleScript

    ARexx (Amiga Rexx)

    bash

    csh

    DCL

    JCL

    ksh

    Cmd.exe batch (Windows, OS/2)

    Command.com batch (DOS)

    REXX

    tcsh

    sh

    Winbatch

    Windows PowerShell

    Windows Script Host

    zsh

  2. GUI腳本:GUI出現帶來一種專業的控制計算機的腳本語言。它在用戶和圖形界面,菜單,按鈕等之間互動。它經常用來自動化重復性動作,或設置一個標准狀態。理論上它可以用來控制運行於基於GUI的計算機上的所有應用程序,但實際上這些語言是否被支持還要看應用程序和操作系統本身。當通過鍵盤進行互動時,這些語言也被稱為宏語言。

    具體分類有:

    AutoHotkey

    AutoIt

    Expect

  3. 應用程序定製:許多大型的應用程序都包括根據用戶需求而定製的慣用腳本語言。同樣地,許多電腦游戲系統使用一種自定義腳本語言來表現NPC(non-player character,non-playable character,non-player class)和游戲環境的預編程動作。此類語言通常是為一個單獨的應用程序所設計,雖然它們貌似一些通用語言(如QuakeC, modeled after C),但它們有自定義的功能。具體分類:

    Action Code Script

    ActionScript

    AutoLISP

    BlobbieScript

    Emacs Lisp

    Game Maker Language

    HyperTalk

    IPTSCRAE

    IRC script

    Lingo

    Maya Embedded Language

    mIRC script

    NWscript

    QuakeC

    UnrealScript

    Visual Basic for Applications

    VBScript

    ZZT-oop

  4. web編程腳本:應用程序定製的腳本語言中有一種重要的類別,用於提供WEB頁面的自定義功能。它專業處理互聯網通信,使用網頁瀏覽器作為用戶界面。當然,大多現代WEB編程語言都比較強大可以做一些通用編程。具體分類:

    ColdFusion (Application Server)

    Lasso

    Miva

    SMX

    IPTSCRAE-一些網路開發團隊用於創建論壇的工具

  5. 文本處理語言:處理基於文本的記錄是腳本語言最早的用處之一。如Unix's awk最早是設計來幫助系統管理員處理調用UNIX基於文本的配置和LOG文件。PERL最早是用來產生報告的,現在它已經成了全面成熟的語言。

    具體分類:

    Awk

    Perl

    sed

    XSLT

  6. 通用動態語言:一些語言,比如Perl,從一門腳本語言發展成了更通用的編程語言。由於「解釋執行,內存管理,動態」等特性,它們仍被稱為腳本語言。但它們已經用於應用程序編寫,用戶也不把它們看作腳本語言。

    APL

    Dao

    Dylan

    Groovy

    Lua

    MUMPS (M)

    newLISP

    Nuva

    Perl

    PHP

    Python

    Ruby

    Scheme

    Smalltalk

    SuperCard

    Tcl (Tool command language)

  7. 程序語言:少數的語言被設計通過嵌入應用程序來取代應用程序定製的腳本語言。開發者(如使用C等其它系統語言)包入使腳本語言可以控制應用程序的hook。這些語言和應用程序定製的腳本語言是同種用途,但優點在於可以在應用程序之間傳遞一些技能。

    具體分類:

    Ch (C/C++ interpreter)

    Dao

    ECMAScript 亦稱 DMDScript, JavaScript, JScript

    GameMonkeyScript

    Guile

    ICI

    Lua

    RBScript (REALbasic Script)

    Squirrel

    Tcl

    Z-Script

  8. JavaScript直到現在仍然是網頁瀏覽器內的主要編程語言,它的ECMAScript標准化保證了它成為流行的通用嵌入性語言。Tcl作為一種擴展性語言而創建,但更多地被用作通用性語言,就如同Python, Perl, Ruby一樣。Q語言是在VBScript的基礎上發展起來,專用於按鍵精靈系列產品,成為一門更接近「漢語」習慣的腳本語言。

    BeanShell (scripting for Java)

    CobolScript

    Escapade (server side scripting)

    Euphoria

    F-Script

    Ferite

    Groovy

    Gui4Cli

    Io

    KiXtart

    Mondrian

    Object REXX

    Pike

    Pliant

    REBOL

    ScriptBasic

    Shorthand Language

    Simkin

    Sleep

    StepTalk

    Visual DialogScript

E. php 中 webservice 是如何使用的 調用別人的介面 參數是如何傳遞的

php調用web service還是非常簡單的。下面用一個例子說明:
web service服務是查詢QQ用戶是否在線
使用php5開發客戶端:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("");
var_mp($client->__getTypes());
print("");

class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);

$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);

echo $arrResult->qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?>
代碼確實很簡單吧,創建SoapClient對象時,可以使用保存在本地WSDL文件,也可以使用遠程的地址,後面的array數組里可以帶上很多的參數,具體參數可以查php的SoapClient幫助,這里帶的是字元集編碼,如果調用方法的參數里有中文,一定要指定字元集編碼,否則會出錯。
調
用web service前可以先調用SoapClient的__geunctions()和__getTypes()方法看一下你要調用的
web service暴露的方法,參數和數據類型,需要注意的是傳入的參數名一定要和soapclient裡面定義的一致,否則參數是傳不過去的。
需要使用SoapClient的__soapCall()或__call()方法,具體使用方法可以查php的幫助文檔。如果參數要求是一個結構體,請用類代替,如上面的代碼。
另外發現個問題,如果web service方法返回的是xml格式的字元串,php接收到以後會自己把數據內容解析出來,而不是xml字元串.

F. php解析xml

.asmx的全程是ASMX Active Server Methods,.asmx 是WEB服務文件,asmx.cs里有相關代碼
屬於B/S形式,用SOAP方式HTTP訪問,用XML返回。

以下是 php語言 利用 soap調用.Net的WebService asmx文件

<?php
//php.ini中打開下面3個dll
//extension = php_soap.dll
//extension = php_curl.dll
//extension = php_openssl.dll
header("content-type:text/html;charset=utf-8");
$client = new SoapClient(" http://192.168.1.178:808/ChkWelePsw.asmx?WSDL");
//本行測試不可行 $client = new SoapClient(" http://192.168.1.178:808/chkwelepsw.asmx?WSDL/ChkWele?username=test3&psw=123");
//參數這樣傳遞 先包裝一下
$param = array('username'=>'test3','psw'=>'123');
//調用必須用__soapCall
$p = $client->__soapCall('ChkWele',array('parameters' => $param));
print_r($p->ChkWeleResult); //這里先輸出一下變數$p,看看是什麼類型。
?>

.NET部分 webservice要注意的地方
/*
* <system.web>在這個節點中加入如下內容
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
*/
[WebMethod(Description = "This......", EnableSession = false)]
public string ChkWele(string username, string psw)
{
string ret = "";
return ret;
}

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726