當前位置:首頁 » 編程語言 » 跨域sql

跨域sql

發布時間: 2022-11-20 19:19:44

『壹』 sqlServer模式存儲Session,請問如何跨域共享Session

SQLServer模式存儲Session,請問如何跨域共享Session
首先簡要說說asp.net 的session機制,當客戶端向服務端發生會話時(不是訪問了網站某頁面就一定產生了會話),服務端會寫一個cookie到客戶端,這個cookie保存著sessionid ,名字為「ASP.NET_SessionID」 ,在下一次發生向服務端的請求時這個cookie會包含在請求頭中,這個cookie僅僅包含了sessionid ,其他信息以(某種形式)保存在服務端並被sessionid標識。

『貳』 transactionscope 指定的事務所具有的 isolationlevel 與為該范圍請求的值不同

分布式事務處理TransactionScope和非分布式事務處理TransactionScope它的用途是為資料庫訪問提供了一個「輕量級」區別於:SqlTransaction的事物TransactionScope這個事務自身還封裝了多個資料庫查詢。只要任意一個SqlCommand對象引發異常,程序流控制就會跳出TransactionScope的using語句塊,隨後,TransactionScope將自行釋放並回滾該事務。由於這段代碼使用了using語句,所以SqlConnection對象和TransactionScope對象都將被自動調用Dispose()釋放。由此可見,只需添加很少的幾行代碼,您就可以構建出一個事務模型,這個模型可以對異常進行處理,執行結束後會自行清理,此外,它還可以對命令的提交或回滾進行管理。TransactionScope在文檔中宣稱只在「必要」情況下才提升事務級別(多資料庫時才使用分布式事務,如果是同一個資料庫,最好使用SqlTransaction),但是事實上不是這樣。在TransactionScope內,只要你用不同的SqlConnection對象操作DB一次以上(不管你的目標是不是同一個實例、同一個庫),都會提升事務級別到分布式事務。使用分布式事務注意如下幾點1:確保參與事務的machine開啟了分布式事務支持;2:如果machine開啟了防火牆,需要設置msdtc進程為例外;3:參與事務的machine不能跨域(如果跨域,目前微軟還沒有確切的解決方案);4:多資料庫時才使用分布式事務,如果是同一個資料庫,最好使用SqlTransaction.大部分都是用SqlTransaction這個類來在程序代碼中保證事務性,但是SqlTransaction是與SQLServer資料庫相關的類,如果將這個類用在了B層,那麼就突破了三層架構的底線了,如果將來換資料庫(比如從SQLServer換到Oracle),D層和B層都得重寫,所以這樣做的局限性很大。用TransactionScope,這個類是與具體資料庫無關的類,用這個類來保證B層的事務性十分可行。示例:///////發送消息/////////格式7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName,7FFA3AF2-E74B-4174-8403-5010C53E49A7|userName//////表示已送///publicstaticintsendMessage(stringsendUserId,stringtoUser,stringcontent,stringsendedStatus){intreceiveCount=0;=newTransactionOptions();//設置事務隔離級別transactionOption.IsolationLevel=System.Transactions.IsolationLevel.ReadCommitted;//設置事務超時時間為60秒transactionOption.Timeout=newTimeSpan(0,0,60);using(TransactionScopescope=newTransactionScope(TransactionScopeOption.Required,transactionOption)){try{//在這里實現事務性工作//發送消息insertMessage(sendUserId,toUser,content,sendedStatus);//在接收信息表中插入記錄receiveCount+=insertReceiveMessage(userids[0],sendUserId,content,"0");//沒有錯誤,提交事務scope.Complete();}catch(Exceptionex){thrownewException("發送信息異常,原因:"+ex.Message);}finally{//釋放資源scope.Dispose();}}returnreceiveCount;}

『叄』 vue-resource 怎麼解決跨域問題

上一篇我們介紹了如何使用vue resource處理請求,結合服務端的REST API,就能夠很容易地構建一個增刪查改應用。

這個應用始終遺留了一個問題,Web App在訪問REST API時,沒有經過任何認證,這使得服務端的REST API是不安全的,只要有人知道api地址,就可以調用API對服務端的資源進行修改和刪除。

今天我們就來探討一下如何結合Web API來限制資源的訪問。

本文的主要內容如下:

介紹傳統的Web應用和基於REST服務的Web應用

介紹OAuth認證流程和密碼模式

創建一個基於ASP. Identity的Web API應用程序

基於$.ajax實現OAuth的注冊、登錄、注銷和API調用

基於vue-resource實現OAuth的注冊、登錄、注銷和API調用

本文的最終示例是結合上一篇的CURD,本文的登錄、注冊、注銷和API調用功能實現的。

35

本文9個示例的源碼已放到GitHub,如果您覺得本篇內容不錯,請點個贊,或在GitHub上加個星星!

Page Demo GitHub Source

基於$.ajax的示例如下:

注冊示例 登錄和注銷示例 登錄獲取token並調用API示例 注冊、登錄、注銷、調用API綜合示例

基於vue-resource的示例如下:

注冊示例 登錄和注銷示例 登錄獲取token並調用API示例 注冊、登錄、注銷、調用API綜合示例

OAuth介紹

傳統的Web應用

在傳統的Web應用程序中,前後端是放在一個站點下的,我們可以通過會話(Session)來保存用戶的信息。

例如:一個簡單的ASP. MVC應用程序,用戶登錄成功後,我們將用戶的ID記錄在Session中,假設為Session["UserID"]。

前端發送ajax請求時,如果這個請求要求已登錄的用戶才能訪問,我們只需在後台Controller中驗證Session["UserID"]是否為空,就可以判斷用戶是否已經登錄了。

這也是傳統的Web應用能夠逃避面向無連接的方法。

基於REST服務的Web應用

當今很多應用,客戶端和服務端是分離的,服務端是基於REST風格構建的一套Service,客戶端是第三方的Web應用,客戶端通過跨域的ajax請求獲取REST服務的資源。

然而REST Service通常是被設計為無狀態的(Stateless),這意味著我們不能依賴於Session來保存用戶信息,也不能使用Session["UserID"]這種方式確定用戶身份。

解決這個問題的方法是什麼呢?常規的方法是使用OAuth 2.0。

對於用戶相關的OpenAPI,為了保護用戶數據的安全和隱私,第三方Web應用訪問用戶數據前都需要顯式的向用戶徵求授權。

相比於OAuth 1.0,OAuth 2.0的認證流程更加簡單。

專用名詞介紹

在了解OAuth 2.0之前,我們先了解幾個名詞:

Resource:資源,和REST中的資源概念一致,有些資源是訪問受保護的

Resource Server:存放資源的伺服器

Resource Owner:資源所有者,本文中又稱為用戶(user)

User Agent:用戶代理,即瀏覽器

Client: 訪問資源的客戶端,也就是應用程序

Authorization Server:認證伺服器,用於給Client提供訪問令牌的伺服器

Access Token:訪問資源的令牌,由Authorization Server器授予,Client訪問Resource時,需提供Access Token

Bearer Token:Bearer Token是Access Token的一種,另一種是Mac Token。

Bearer Token的使用格式為:Bearer XXXXXXXX

Token的類型請參考:s://tools.ietf/html/draft-ietf-oauth-v2-15#section-7.1

有時候認證伺服器和資源伺服器可以是一台伺服器,本文中的Web API示例正是這種運用場景。

OAuth認證流程

在知道這幾個詞以後,我們用這幾個名詞來編個故事。

簡化版本

這個故事的簡化版本是:用戶(Resource Owner)訪問資源(Resource)。

image

具體版本

簡化版的故事只有一個結果,下面是這個故事的具體版本:

用戶通過瀏覽器打開客戶端後,客戶端要求用戶給予授權。

客戶端可以直接將授權請求發給用戶(如圖所示),或者發送給一個中間媒介,比如認證伺服器。

用戶同意給予客戶端授權,客戶端收到用戶的授權。

授權模式(Grant Type)取決於客戶端使用的模式,以及認證伺服器所支持的模式。

客戶端提供身份信息,然後向認證伺服器發送請求,申請訪問令牌

認證伺服器驗證客戶端提供的身份信息,如果驗證通過,則向客戶端發放令牌

客戶端使用訪問令牌,向資源伺服器請求受保護的資源

資源伺服器驗證訪問令牌,如果有效,則向客戶端開放資源

image

以上幾個步驟,(B)是較為關鍵的一個,即用戶怎麼樣才能給客戶端授權。有了這個授權以後,客戶端就可以獲取令牌,進而通過臨牌獲取資源。這也是OAuth 2.0的運行流程,詳情請參考:s://tools.ietf/html/draft-ietf-oauth-v2-15#section-1.2

客戶端的授權模式

客戶端必須得到用戶的授權(authorization grant),才能獲得令牌(access token)。

OAuth 2.0定義了四種授權方式:

授權碼模式(authorization code)

簡化模式(implicit)

密碼模式(resource owner password credentials)

客戶端模式(client credentials)

本文的示例是基於密碼模式的,我就只簡單介紹這種模式,其他3我就不介紹了,大家有興趣可以看阮大的文章:

://http://www.yingtaow.com/sitemap.html?blog/2014/05/oauth_2_0.html

密碼模式

密碼模式(Resource Owner Password Credentials Grant)中,用戶向客戶端提供自己的用戶名和密碼。客戶端使用這些信息,向服務端申請授權。

在這種模式中,用戶必須把自己的密碼給客戶端,但是客戶端不得儲存密碼。這通常用在用戶對客戶端高度信任的情況下,比如客戶端是操作系統的一部分,或者由一個著名公司出品。

image

密碼嘛事的執行步驟如下:

(A)用戶向客戶端提供用戶名和密碼。

(B)客戶端將用戶名和密碼發給認證伺服器,向後者請求令牌。

(C)認證伺服器確認無誤後,向客戶端提供訪問令牌。

(B)步驟中,客戶端發出的請求,包含以下參數:

grant_type:表示授權類型,此處的值固定為"password",必選項。

username:表示用戶名,必選項。

password:表示用戶的密碼,必選項。

scope:表示許可權范圍,可選項。

注意:在後面的客戶端示例中,除了提供username和password,grant_type也是必須指定為"password",否則無法獲取服務端的授權。

服務端環境准備

如果您是前端開發人員,並且未接觸過ASP. Web API,可以跳過此段落。

image

Authentication選擇Indivial User Accounts

image

創建這個Web API工程時,VS會自動引入Owin和Asp.Identity相關的庫。

image

修改ValuesController,除了IEnumerable<string> Get()操作外,其他操作都刪除,並為該操作應用[Authorize]特性,這表示客戶端必須通過身份驗證後才能調用該操作。

public class ValuesController : ApiController

{

// GET: api/Values

[Authorize]

public IEnumerable<string> Get()

{

return new string[] { "value1", "value2" };

}

}

添加Model, Controller

image

image

image

初始化資料庫

image

執行以下3個命令

image

image

執行以下SQL語句:

顯示代碼

CustomersController類有5個Action,除了2個GET請求外,其他3個請求分別是POST, PUT和DELETE。

為這3個請求添加[Authorize]特性,這3個請求必須通過身份驗證才能訪問。

隱藏代碼

public class CustomersController : ApiController

{

private ApplicationDbContext db = new ApplicationDbContext();

// GET: api/Customers

public IQueryable<Customer> GetCustomers()

{

return db.Customers;

}

// GET: api/Customers/5

[ResponseType(typeof(Customer))]

public async Task<IActionResult> GetCustomer(int id)

{

Customer customer = await db.Customers.FindAsync(id);

if (customer == null)

{

return NotFound();

}

return Ok(customer);

}

// PUT: api/Customers/5

[Authorize]

[ResponseType(typeof(void))]

public async Task<IActionResult> PutCustomer(int id, Customer customer)

{

// ...

}

// POST: api/Customers

[Authorize]

[ResponseType(typeof(Customer))]

public async Task<IActionResult> PostCustomer(Customer customer)

{

// ...

}

// DELETE: api/Customers/5

[ResponseType(typeof(Customer))]

[Authorize]

public async Task<IActionResult> DeleteCustomer(int id)

{

// ...

}

}

讓Web API以CamelCase輸出JSON

在Global.asax文件中添加以下幾行代碼:

var formatters = GlobalConfiguration.Configuration.Formatters;

var jsonFormatter = formatters.JsonFormatter;

var settings = jsonFormatter.SerializerSettings;

settings.Formatting = Formatting.Indented;

settings.ContractResolver = new ();

啟用CORS

在Nuget Package Manager Console輸入以下命令:

Install-Package Microsoft.Asp.WebApi.Cors

在WebApiConfig中啟用CORS:

public static class WebApiConfig

{

public static void Register(Configuration config)

{

var cors = new EnableCorsAttribute("*", "*", "*");

config.EnableCors(cors);

// ...

}

}

類說明

在執行上述步驟時,VS已經幫我們生成好了一些類

image

IdentityModels.cs:包含ApplicationDbContext類和ApplicationUser類,無需再創建DbContext類

public class ApplicationUser : IdentityUser

{

// ...

}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

{

// ...

}

Startup.Auth.cs:用於配置OAuth的一些屬性。

public partial class Startup

{

public static OAuthOptions { get; private set; }

public static string PublicClientId { get; private set; }

// For more information on configuring authentication, please visit ://go.microsoft./fwlink/?LinkId=301864

public void ConfigureAuth(IAppBuilder app)

{

// ..

// Configure the application for OAuth based flow

PublicClientId = "self";

OAuthOptions = new

{

TokenEndpointPath = new PathString("/Token"),

Provider = new ApplicationOAuthProvider(PublicClientId),

AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),

AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),

// In proction mode set AllowInsecure = false

AllowInsecure = true

};

// Enable the application to use bearer tokens to authenticate users

app.UseOAuthBearerTokens(OAuthOptions);

// ..

}

}

這些OAuth配置項,我們只用關注其中的兩項:

TokenEndpointPath:表示客戶端發送驗證請求的地址,例如:Web API的站點為www.example.,驗證請求的地址則為www.example./token。

UseOAuthBearerTokens:使用Bearer類型的token_type(令牌類型)。

ApplicationOAuthProvider.cs:默認的OAuthProvider實現,GrantResourceOwnerCredentials方法用於驗證用戶身份信息,並返回access_token(訪問令牌)。

public override async Task GrantResourceOwnerCredentials( context)

{

// ...

}

通俗地講,客戶端輸入用戶名、密碼,點擊登錄後,會發起請求到www.example./token。

token這個請求在服務端執行的驗證方法是什麼呢?正是GrantResourceOwnerCredentials方法。

客戶端發起驗證請求時,必然是跨域的,token這個請求不屬於任何ApiController的Action,而在WebApiConfig.cs中啟用全局的CORS,只對ApiController有效,對token請求是不起作用的。

所以還需要在GrantResourceOwnerCredentials方法中添加一行代碼:

public override async Task GrantResourceOwnerCredentials( context)

{

context.Response.Headers.Add("Access-Control-Allow-Origin", new []{"*"});

// ...

}

IdentityConfig.cs:配置用戶名和密碼的復雜度,主要用於用戶注冊時。例如:不允許用戶名為純字母和數字的組合,密碼長度至少為6位…。

隱藏代碼

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)

{

var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));

// Configure validation logic for usernames

manager.UserValidator = new UserValidator<ApplicationUser>(manager)

{

= false,

RequireUniqueEmail = true

};

// Configure validation logic for passwords

manager.PasswordValidator = new PasswordValidator

{

RequiredLength = 6,

RequireNonLetterOrDigit = true,

RequireDigit = true,

RequireLowercase = true,

RequireUppercase = true,

};

// ...

return manager;

}

使用Postman測試GET和POST請求

測試GET請求

image

GET請求測試成功,可以獲取到JSON數據。

測試POST請求

image

POST請求測試不通過,提示:驗證不通過,請求被拒絕。

基於$.ajax實現注冊、登錄、注銷和API調用

服務端的環境已經准備好了,現在我們就逐個實現用戶注冊、登錄,以及API調用功能吧。

注冊

頁面的HTML代碼如下:

<div id="app">

<div class="container">

<span id="message">{{ msg }}</span>

</div>

<div class="container">

<div class="form-group">

<label>電子郵箱</label>

<input type="text" v-model="registerModel.email" />

</div>

<div class="form-group">

<label>密碼</label>

<input type="text" v-model="registerModel.password" />

</div>

<div class="form-group">

<label>確認密碼</label>

<input type="text" v-model="registerModel.confirmPassword" />

</div>

<div class="form-group">

<label></label>

<button @click="register">注冊</button>

</div>

</div>

</div>

創建Vue實例,然後基於$.ajax發送用戶注冊請求:

var demo = new Vue({

el: '#app',

data: {

registerUrl: '://localhost:10648/api/Account/Register',

registerModel: {

email: '',

password: '',

confirmPassword: ''

},

msg: ''

},

methods: {

register: function() {

var vm = this

vm.msg = ''

$.ajax({

url: vm.registerUrl,

type: 'POST',

dataType: 'json',

data: vm.registerModel,

success: function() {

vm.msg = '注冊成功!'

},

error: vm.requestError

})

},

requestError: function(xhr, errorType, error) {

『肆』 跨域的appid和appsecret怎麼存資料庫

  • 生成規則一般是自定義的。其實怎麼做都是可以的。為了安全可以考慮加密
    舉個簡單的例子。你可以用appid,appsecred分別用MD5加密,生成2個字元串,然後分別取2個字元串的後6位字元串,鏈接在一起組成一個12位的字元串。這個字元串就可以作為Token.存儲到資料庫。
    當用戶請求的時候,會傳入appid,appsecred2個參數,以同樣的方式加密組合,然後同資料庫中的字元串對比,一樣就通過。

    加密的方法有很多,比如轉大寫,轉小寫,追加特殊字元,然後加密。除非別人知道你的加密規則,不然破解不了,因為,你的token不是完整密文,他破解不了。

『伍』 sql server2005 資料庫 怎樣跨域查詢

以下語句是否可以幫助到你:
SELECT * FROM OPENDATASOURCE('SQLOLEDB',
'Data Source=XXX;User ID=sa;Password=YYY'
).databasename.dbo.tablename

XXX:輸入你要訪問的sql server 2005的實例名或者該服務所在的ip地址。
YYY:輸入sa用戶的密碼;
databasename:替換為你要訪問的資料庫名稱
tablename:替換為你要訪問的這個資料庫里的一個表或者視圖名稱
注意:以上變數輸入都不需要帶「」,直接輸入即可。

good luck!

『陸』 ssm+vue跨域處理

寫個簡單的吧
a.php
<form method="post" action="b.php">
<input type="text" name="test" value="">這是你要提交的數據
<input type="submit" value="提交">
</form>
點擊提交按鈕就跳到b頁面了
b.php
echo $_POST['test'];
列印a提交過來的數據,如果有數據你就自己寫sql語句存入資料庫就好了

『柒』 web.config 跨域問題

一、認識Web.config文件

Web.config文件是一個XML文本文件,它用來儲存 ASP.NET Web 應用程序的配置信息(如最常用的設置ASP.NET Web 應用程序的身份驗證方式),它可以出現在應用程序的每一個目錄中。當你通過VB.NET新建一個Web應用程序後,默認情況下會在根目錄自動創建一個默認的
Web.config文件,包括默認的配置設置,所有的子目錄都繼承它的配置設置。如果你想修改子目錄的配置設置,你可以在該子目錄下新建一個Web.config文件。它可以提供除從父目錄繼承的配置信息以外的配置信息,也可以重寫或修改父目錄中定義的設置。

在運行時對Web.config文件的修改不需要重啟服務就可以生效(註:<processModel> 節例外)。當然Web.config文件是可以擴展的。你可以自定義新配置參數並編寫配置節處理程序以對它們進行處理。

二、web.config配置文件(默認的配置設置)以下所有的代碼都應該位於

<configuration>
<system.web>



</system.web>
</configuration>

之間,出於學習的目的下面的示例都省略了這段XML標記

1、<authentication> 節

作用:配置 ASP.NET 身份驗證支持(為Windows、Forms、PassPort、None四種)。該元素只能在計算機、站點或應用程序級別聲明。<authentication> 元素必需與<authorization> 節配合使用。

示例:

以下示例為基於窗體(Forms)的身份驗證配置站點,當沒有登陸的用戶訪問需要身份驗證的網頁,網頁自動跳轉到登陸網頁。

<authentication mode="Forms" >
<forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

</authentication>

其中元素loginUrl表示登陸網頁的名稱,name表示Cookie名稱

2、<authorization> 節

作用:控制對 URL 資源的客戶端訪問(如允許匿名用戶訪問)。此元素可以在任何級別(計算機、站點、應用程序、子目錄或頁)上聲明。必需與<authentication> 節配合使用。

示例:以下示例禁止匿名用戶的訪問

<authorization>
<deny users="?"/>
</authorization>

註:你可以使用user.identity.name來獲取已經過驗證的當前的用戶名;可以使用
web.Security.FormsAuthentication.RedirectFromLoginPage方法將已驗證的用戶重定向到用戶剛才請求的頁面.具體的實例請參考:

Forms驗證 http://www.fanvb.net/websample/dataauth.aspx

3、<compilation>節

作用:配置 ASP.NET 使用的所有編譯設置。默認的debug屬性為「True」.在程序編譯完成交付使用之後應將其設為True(Web.config文件中有詳細說明,此處省略示例)

4、<customErrors>

作用:為 ASP.NET 應用程序提供有關自定義錯誤信息的信息。它不適用於 XML Web services 中發生的錯誤。

示例:當發生錯誤時,將網頁跳轉到自定義的錯誤頁面。

<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
</customErrors>

其中元素defaultRedirect表示自定義的錯誤網頁的名稱。mode元素表示:對不在本地 Web 伺服器上運行的用戶顯示自定義(友好的)信息。

5、<httpRuntime>節

作用:配置 ASP.NET HTTP 運行庫設置。該節可以在計算機、站點、應用程序和子目錄級別聲明。

示例:控制用戶上傳文件最大為4M,最長時間為60秒,最多請求數為100

<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>

6、 <pages>

作用:標識特定於頁的配置設置(如是否啟用會話狀態、視圖狀態,是否檢測用戶的輸入等)。<pages>可以在計算機、站點、應用程序和子目錄級別聲明。

示例:不檢測用戶在瀏覽器輸入的內容中是否存在潛在的危險數據(註:該項默認是檢測,如果你使用了不檢測,一要對用戶的輸入進行編碼或驗證),在從客戶端回發頁時將檢查加密的視圖狀態,以驗證視圖狀態是否已在客戶端被篡改。(註:該項默認是不驗證)

<pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

7、<sessionState>

作用:為當前應用程序配置會話狀態設置(如設置是否啟用會話狀態,會話狀態保存位置)。

示例:

<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>

註:

mode="InProc"表示:在本地儲存會話狀態(你也可以選擇儲存在遠程伺服器或SAL伺服器中或不啟用會話狀態)

cookieless="true"表示:如果用戶瀏覽器不支持Cookie時啟用會話狀態(默認為False)

timeout="20"表示:會話可以處於空閑狀態的分鍾數

8、<trace>

作用:配置 ASP.NET 跟蹤服務,主要用來程序測試判斷哪裡出錯。

示例:以下為Web.config中的默認配置:

<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

註:

enabled="false"表示不啟用跟蹤;requestLimit="10"表示指定在伺服器上存儲的跟蹤請求的數目

pageOutput="false"表示只能通過跟蹤實用工具訪問跟蹤輸出;

traceMode="SortByTime"表示以處理跟蹤的順序來顯示跟蹤信息

localOnly="true" 表示跟蹤查看器 (trace.axd) 只用於宿主 Web 伺服器

三、自定義Web.config文件配置節

自定義Web.config文件配置節過程分為兩步。

一是在在配置文件頂部 <configSections> 和 </configSections>標記之間聲明配置節的名稱和處理該節中配置數據的 .NET Framework 類的名稱。

二是在 <configSections> 區域之後為聲明的節做實際的配置設置。

示例:創建一個節存儲資料庫連接字元串

<configuration>
<configSections>
<section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>

<appSettings>
<add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
</appSettings>

<system.web>
......
</system.web>
</configuration>

四、訪問Web.config文件

你可以通過使用ConfigurationSettings.AppSettings 靜態字元串集合來訪問 Web.config 文件示例:獲取上面例子中建立的連接字元串。

Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr")
Dim scon = New SqlConnection(sconstr)

『捌』 關於跨域的問題

一、在前端開發過程中,如果准備開發富應用,跨域的問題將會隨之而來。

        我們先看看什麼是跨域呢:

         所謂跨域,或者異源,是指主機名(域名)、協議、埠號只要有其一不同,就為不同的域(或源) 。出於保護用戶數據的目的,瀏覽器有一個最基本的策略就是同源策略,只允許頁面內的腳本訪問當前域的資源(載入腳本、資源等不受此限制)。

二、如果瀏覽器廠商不對跨域請求進行處理,會給我們帶來什麼危害呢?

        有心人士(病毒製造者)會利用這個漏洞進行如下攻擊:

        1. CSRF/XSRF 攻擊 ,簡單的來講就是在 b.com 頁面中請求 a.com 的介面(瀏覽器會自動帶上 用戶在 a.com 的 cookie),從而獲取用戶的在 a.com 的相關信息。

        2. XSS 注入攻擊 ,類似於 SQL 攻擊,提交含有惡意腳本的數據到伺服器,從而達到破壞頁面或者獲取用戶的 cookie。

三、我們了解到了什麼是跨域,那我們又應該如何解決呢,現在找到了這些比較權威的文章,大家先品讀一下:

        1. mozilla 官方網站關於跨域的文章(Cross Origin), HTTP訪問控制(CORS)

        2. mozilla 官方網站關於瀏覽器同源策略的簡要介紹(Same Origin),  瀏覽器的同源策略

四、讀完這些文章,你打算怎麼處理跨域問題呢,我先談談自己關於跨域的解決方案:

        1. 採用 CORS 協議,直接在 Nginx 中設置允許跨域的 header(也可以在後端的應用程序內設置,不過在 Nginx 入口配置的話更加統一),在 location 配置中直接使用指令 add_header( 官方文檔鏈接 ),示例配置如下:

        2. 使用 JSONP,也是需要後端配合,利用「瀏覽器載入腳本、資源時不受同源策略的約束」這個特性,但是這種方式非常受限制,例如只能使用 GET 請求,不能攜帶自定義 header 等。

        3. 其他的一些方法,例如 window.name, document.domain 以及 HTML5 中的特性 window.postMessage 等

五、其他參考鏈接

        1.  淺談JS跨域問題

        2. 跨域資源共享 CORS 詳解----阮一峰

六、聲明

        現在網路上的知識非常復雜,有些是摘自權威書籍的,有些是作者自己理解然後記錄下來的,有些是瞎掰的,所以一定要結合情況多多甄別,對於有權威文檔的知識點,建議先參考文檔。

『玖』 求大神講講web安全,nodejs怎麼防止跨域攻擊和sql注入

是CSRF(Cross-site request forgery) 不是你寫的那個!
跨域不用擔心.主流瀏覽器都會幫你做防禦的. 問題不大,主要是你自己別給其他域的許可權即可.非必要的話,以最小許可權原則.
xss主要就是過濾輸入輸出.如果業務很多,還是找人審計代碼吧.或者用比較成熟的模塊.CSRF的話,1,驗證來源 2加隨機token之類的.
sqli主要還是過濾輸入的地方.過濾/轉義關鍵字比如select,and,or等等(有專門的防注入模塊).覺得怕麻煩的話.用那些雲主機的防禦功能.再加個cdn基本就沒事了.(對於一般的反射型跨站也適用)

『拾』 兩套網站程序能否用一個資料庫

可以實現,不過要區別資料庫中的表

比如說:
資料庫有用戶表:一站:user,另外一站就要區分,不能用user。如果要用的話,就要保證這兩表的結構要一樣!否則錯誤!

熱點內容
sql語句的或者 發布:2025-01-15 21:51:20 瀏覽:869
安卓版的車工計算是哪裡出版的 發布:2025-01-15 21:47:29 瀏覽:405
我的世界電腦版進pe伺服器 發布:2025-01-15 21:33:57 瀏覽:294
網頁游戲吃什麼配置 發布:2025-01-15 21:27:58 瀏覽:65
安卓怎麼轉移數據華為 發布:2025-01-15 21:03:02 瀏覽:141
軟體列印反饋單腳本錯誤 發布:2025-01-15 21:01:24 瀏覽:178
如何進cs里的練槍伺服器 發布:2025-01-15 21:00:07 瀏覽:979
蘋果手機存儲晶元 發布:2025-01-15 20:52:02 瀏覽:163
盲人讀屏軟體安卓哪個好 發布:2025-01-15 20:47:13 瀏覽:729
炸圖腳本 發布:2025-01-15 19:56:07 瀏覽:429