在 C# 中使用静态变量是否会阻碍安全编码实践?
Does the use of Static Variables in C# hinder secure coding practices?
我是 C# 编程的新手,目前我的代码中使用了很多静态变量。下面是一个例子:
class Program
{
public int I//Can be used to access the variable i anywhere from the code as it is public
{
get { return i; }
set { i = value; }
}
static int i = 0; // A private static integer
static void Main(string[] args)
{
i = 1;// The main function is changing this integer
}
void reset() {
i = 0;// another function is changing the value of integer i
}
}
class otherclass
{
void otherreset()
{
Program program = new Program();
program.I = 1;// another function in another class is changing the value of integer i(indirectly)
}
}
- 静态变量 i 可用于 class 中的所有函数。
- 然后是 I,它与代码中的每个函数共享 i,因为它是 public。 - 不确定我是否应该这样做。
我确实找到了关于 using static variables in C# 的帖子,但我想知道,从安全角度来看,这是否是标准做法。我担心变量在整个程序执行过程中驻留在内存中的相同位置。
一般来说,还有其他更好的方法可以在各种函数之间共享变量吗?
static int i = 0; // A private static integer
您在这里声明了一个静态成员。到目前为止一切顺利。
static void Main(string[] args)
{
int i = 1;// The main function is changing this integer
}
不,不是。 int i
表示您声明了一个名为 new 的局部变量 i
.
void reset() {
int i = 0;// another function is changing the value of integer i
}
不,不是。 int i
表示您声明了一个名为 new 的局部变量 i
.
I'd like to know if this is a standard practice from a security perspective.
不,它不是,不,它与安全无关。您应该避免 尽可能多地使用静态成员。我认为 的实际原因目前与您当前的知识和理解水平相去甚远。仅将其作为最佳实践。
I am concerned that the variable resides in the same location in memory throughout the execution of the program.
好吧,在内存位置之间 'travel' 的变量不是一个好主意 :-) 非常简单地说,变量是内存中的命名位置。
are there any other better ways in general to share a variable between various functions.
是的,首先要了解函数参数、成员字段和属性。使用任何可用的初学者 C# 书籍,或在线搜索。
我是 C# 编程的新手,目前我的代码中使用了很多静态变量。下面是一个例子:
class Program
{
public int I//Can be used to access the variable i anywhere from the code as it is public
{
get { return i; }
set { i = value; }
}
static int i = 0; // A private static integer
static void Main(string[] args)
{
i = 1;// The main function is changing this integer
}
void reset() {
i = 0;// another function is changing the value of integer i
}
}
class otherclass
{
void otherreset()
{
Program program = new Program();
program.I = 1;// another function in another class is changing the value of integer i(indirectly)
}
}
- 静态变量 i 可用于 class 中的所有函数。
- 然后是 I,它与代码中的每个函数共享 i,因为它是 public。 - 不确定我是否应该这样做。
我确实找到了关于 using static variables in C# 的帖子,但我想知道,从安全角度来看,这是否是标准做法。我担心变量在整个程序执行过程中驻留在内存中的相同位置。
一般来说,还有其他更好的方法可以在各种函数之间共享变量吗?
static int i = 0; // A private static integer
您在这里声明了一个静态成员。到目前为止一切顺利。
static void Main(string[] args)
{
int i = 1;// The main function is changing this integer
}
不,不是。 int i
表示您声明了一个名为 new 的局部变量 i
.
void reset() {
int i = 0;// another function is changing the value of integer i
}
不,不是。 int i
表示您声明了一个名为 new 的局部变量 i
.
I'd like to know if this is a standard practice from a security perspective.
不,它不是,不,它与安全无关。您应该避免 尽可能多地使用静态成员。我认为 的实际原因目前与您当前的知识和理解水平相去甚远。仅将其作为最佳实践。
I am concerned that the variable resides in the same location in memory throughout the execution of the program.
好吧,在内存位置之间 'travel' 的变量不是一个好主意 :-) 非常简单地说,变量是内存中的命名位置。
are there any other better ways in general to share a variable between various functions.
是的,首先要了解函数参数、成员字段和属性。使用任何可用的初学者 C# 书籍,或在线搜索。