簡體   English   中英

在 C# OracleConnection sql 注入方面需要幫助

[英]Need Help on C# OracleConnection sql injection

正如我之前告知的那樣,我是 C# 的新手,並且正在做一些安全修復工作。 需要以下問題的幫助。

為以下代碼獲取 sql 注入。 在這里,我們從不同的配置文件中獲取用戶 ID 和密碼,並將它們存儲在字符串類型變量中。

this.USER_ID = args[0].ToString();
this.DB_SOURCE = args[1].ToString();
this.DB_LOGIN = args[2].ToString();
this.DB_PASSWORD = args[3].ToString();

OracleCommand cmd = new OracleCommand();

OracleConnectionStringBuilder connection = new OracleConnectionStringBuilder();

connection.DataSource = this.DB_SOURCE;
connection.UserID = this.DB_LOGIN;
connection.Password = this.DB_PASSWORD;

cmd.Connection = new OracleConnection(connection.ConnectionString);

cmd.Connection.Open();`

我厭倦了將其更改為以下方式以避免 sql 注入。 但似乎這段代碼不起作用。 我試圖打印我們正在傳遞的變量,但它似乎沒有被復制。 有人可以告訴我我是否在這里做錯了什么

OracleCommand cmd = new OracleCommand();

OracleConnectionStringBuilder connection = new 
OracleConnectionStringBuilder("Data Source = this.DB_SOURCE;User ID = this.DB_LOGIN;Password = this.DB_PASSWORD;");

EventLog.WriteEntry(sSource, " Data Source:" + connection.Data Source, EventLogEntryType.Information); // getting output : Data Source:this.DB_SOURCE

EventLog.WriteEntry(sSource, "User id:" + connection.UserID, EventLogEntryType.Information); // getting output: User id:this.DB_LOGIN

EventLog.WriteEntry(sSource, "Password:" + connection.Password, EventLogEntryType.Information); // getting output: Password:this.DB_PASSWORD

cmd.Connection = new OracleConnection(connection.ConnectionString);`

您構建連接字符串的方式是純文本。 目前你有這個

OracleConnectionStringBuilder("Data Source = this.DB_SOURCE;User ID = this.DB_LOGIN;Password = this.DB_PASSWORD;");

因此,您將使用“this.DB_SOURCE”的字符串作為數據源。 你沒有像你期望的那樣從這個變量中取出值。 如果您將此字符串更改為“AnyOldRubbish”,那么它將以與您今天相同的方式工作。

所以一種方法是像這樣使用字符串插值。

OracleConnectionStringBuilder($"Data Source = {this.DB_SOURCE};User ID = {this.DB_LOGIN};Password = {this.DB_PASSWORD};");

字符串前面的 $ 符號表示使用字符串插值,然后括號用於定義應將哪些值視為字符串中的變量,然后從中提取值。

可以在此處找到有關字符串插值的更多詳細信息: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM