Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Environment.UserName是否容易伪造?_C#_Wpf_Authentication_Windowsdomainaccount - Fatal编程技术网

C# System.Environment.UserName是否容易伪造?

C# System.Environment.UserName是否容易伪造?,c#,wpf,authentication,windowsdomainaccount,C#,Wpf,Authentication,Windowsdomainaccount,在windows WPF桌面应用程序中,我以以下方式使用System.Environment.UserName: var q = from l in db.Logins where l.WinLogin.Trim().Equals(System.Environment.UserName, StringComparison.InvariantCultureIgnoreCase) &&

在windows WPF桌面应用程序中,我以以下方式使用
System.Environment.UserName

 var q = from l in db.Logins where 
                         l.WinLogin.Trim().Equals(System.Environment.UserName, StringComparison.InvariantCultureIgnoreCase)
                      && l.WinDomain.Trim().Equals(System.Environment.UserDomainName, StringComparison.InvariantCultureIgnoreCase)
                        select l.LoginID;

  var login = q.FirstOrDefault();
  if (login == null)
    /*Access rejected*/
  else
    /*Access granted*/
我想知道
System.Environment.UserName
&
System.Environment.UserDomainName
的内容是否可以在windows域内轻易伪造(设置为其他人的帐户),或者非管理员用户是否可以伪造。 我希望这种身份验证适用于不需要最高安全性的普通windows应用程序,只是希望确保我没有忽略一些明显的问题


例如,如果我创建与windows域同名的家庭工作组,然后在该工作组中创建一个用户,然后使用VPN连接到该windows域并在家庭工作组计算机上安装应用程序,我是否会伪造这些变量并获得访问权限?

否,
System.Environment
变量仅适用于该机器。用户名和域名不能伪造。调用最终由
ADVAPI32
处理,它是负责内部Windows内容的Windows组件


你也不能用VPN或其他方法来伪造它。这并不意味着他们无法进入应用程序和你连接的数据库之间。也要确保安全。

谢谢,我会在家里测试。问题是,当我在家运行应用程序时,它会根据本地用户和计算机名进行身份验证,而不是根据用于登录到域的VPN域帐户进行身份验证。如果您在家中的PC上运行,则是。它获取的是家庭电脑信息,而不是你所连接的域的信息。检查了它,不能伪造它,主要是因为域名包含一个点字符,这在windows计算机名中是禁止的,所以对我来说这就足够了。伪造者是谁?由用户提供?当然,他可以修改你的代码或.NET Framework代码。@usr但是如果没有plb文件,这将是一项非常困难和艰巨的工作,对吗?编辑.NET二进制文件非常容易。例如,反编译、编辑和重新编译。如果你的用户不能做到这一点,那么我想这可能足够好了。。。但这不是真正的安全性。根据这个线程,它不应该这么简单。