小编Int*_*eXX的帖子

SecureString在C#应用程序中是否实用?

如果我的假设在这里错了,请随意纠正我,但让我解释一下我为什么要问.

摘自MSDN,a SecureString:

代表应保密的文本.文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除.

我明白了,将密码或其他私人信息存储在a中是完全合理SecureStringSystem.String,因为你可以控制它实际存储在内存中的方式和时间,因为System.String:

是不可变的,当不再需要时,不能以编程方式安排垃圾收集; 也就是说,实例在创建后是只读的,并且无法预测实例何时从计算机内存中删除.因此,如果String对象包含敏感信息(如密码,信用卡号或个人数据),则使用该信息后可能会显示该信息,因为您的应用程序无法从计算机内存中删除该数据.

但是,在GUI应用程序(例如,ssh客户端)的SecureString 情况下,必须从a构建 System.String.所有文本控件都使用字符串作为其基础数据类型.

因此,这意味着每次用户按下某个键时,就会丢弃那里的旧字符串,并构建一个新字符串来表示文本框内的值,即使使用密码掩码.并且我们无法控制何时或是否从内存中丢弃任何这些值.

现在是时候登录服务器了.你猜怎么着?您需要在连接上传递一个字符串以进行身份​​验证.所以让我们将我们SecureString转换为System.String....现在我们在堆上有一个字符串,无法强制它通过垃圾收集(或将0写入其缓冲区).

我的观点是:无论你做什么,沿线某处,那SecureString被转换成一个System.String,这意味着它至少会在某些点上堆存在(没有垃圾收集的任何保证).

我的观点不是:是否存在绕过将字符串发送到ssh连接或绕过控件存储字符串(制作自定义控件)的方法.对于这个问题,您可以将"ssh connection"替换为"登录表单","注册表单","付款表单","食物 - 你愿意喂你的小狗但不是你孩子的表格",等等

  • 那么,在什么时候使用SecureString实际变得实用?
  • 是否值得花费额外的开发时间来彻底根除System.String对象的使用?
  • 完全重点是SecureString减少System.String堆上的时间(降低转移到物理交换文件的风险)?
  • 如果攻击者已经拥有进行堆检查的手段,那么他很可能(A)已经有了读取击键的方法,或者(B)已经在物理上拥有该机器 ...所以会使用a SecureString阻止他进入数据呢?
  • 这只是"通过默默无闻的安全"吗?

对不起,如果我把问题放得太厚,好奇心就好了.随意回答我的任何或所有问题(或告诉我,我的假设是完全错误的).:)

c# security

218
推荐指数
4
解决办法
4万
查看次数

启动Visual Studio 2015 SP3时出现客户端身份验证错误

我刚刚执行了干净安装的Visual Studio 2015 SP3,我在启动时在输出窗口中得到了这个:

我们无法自动填充您的Visual Studio Team Services帐户.

遇到以下错误:TF400813:资源不可用于匿名访问.需要客户端验证.

我根本没有使用VSTS,也没有配置任何连接.(但是,我确实将连接配置为本地TFS实例.)

我怎么能免除这个错误信息?我想指示Visual Studio在启动时永远不要尝试连接到VSTS.

visual-studio-2015 azure-devops

161
推荐指数
2
解决办法
8万
查看次数

检查路径是否有效

我只是想知道:我正在寻找一种方法来验证给定路径是否有效. (注意:我不想检查文件是否存在!我只想证明路径的有效性 - 所以如果文件可能存在于该位置).

问题是,我在.Net API中找不到任何东西.由于Windows支持的许多格式和位置,我宁愿使用MS-native.

由于该功能应该能够检查:

  • 相对路径(./)
  • 绝对路径(c:\ tmp)
  • UNC-Pathes(\ some-pc\c $)
  • NTFS限制,如完整路径1024个字符 - 如果我没有错误超过路径将使许多内部Windows功能无法访问文件.用Explorer重命名它仍然有效
  • 卷GUID路径:"\?\ Volume {GUID}\somefile.foo

有没有人有这样的功能?

.net c# winapi path

101
推荐指数
6
解决办法
12万
查看次数

如何在不将焦点设置到其他控件的情况下移除焦点

我喜欢我的UI直观; 每个屏幕应该自然而不引人注目地引导用户进入应用程序的下一步.除此之外,我努力使事情变得混乱和混乱.

开玩笑 :-)

我有三个TableRows,每个包含一个只读和不可聚焦的EditText控件,然后是一个右边的按钮.每个按钮启动相同的活动但具有不同的参数.用户在那里进行选择,子活动结束,EditText用用户的选择填充适当的.

这是经典的级联值机制; 每个选择都会缩小下一个选择的可用选项等.因此,我将禁用每个下一行的两个控件,直到当前行上的EditText包含值.

我需要按照优先顺序做两件事之一:

  1. 单击按钮时,立即移除焦点而不将焦点设置为其他按钮
  2. 活动开始时将焦点设置为第一个按钮

子活动返回后,问题就出现了; 单击的按钮保持焦点.

回复:上面的#1 - 似乎没有removeFocus()方法或类似的东西

回复:上面的#2 - 我可以requestFocus()用来将焦点设置到下一行的按钮,并且在子活动返回后工作,但由于某种原因,它在父活动中不起作用onCreate().

我需要在任一方向上保持UI一致性 - 子活动完成后没有按钮具有焦点,或者每个按钮根据其在逻辑流程中的位置获得焦点,包括在任何选择之前的第一个(也是唯一的)活动按钮.

android android-layout

88
推荐指数
5
解决办法
11万
查看次数

构建期间mscorlib版本冲突

在一个新的Win8.1重新安装上,我的所有代码都从备份恢复,当我构建我的解决方案的主项目时,我突然收到一个Visual Studio警告:

发现无法解析的同一依赖程序集的不同版本之间的冲突.当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出.

我将输出日志级别设置为Detailed,我发现了一些这样的条目:

"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"和"mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes"之间存在冲突.之所以选择"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"是因为它的版本更高.

麻烦的是,我没有mscorlib在解决方案的任何地方引用旧的新的.我的机器上有几个需要.NET 3.5的应用程序,但我看不出它是如何相关的.

一个区别是:没有发生此警告的旧Win8.1安装是一台独立的机器; 这次我加入了域名.我不知道这是否有所作为(我看不清楚),但我认为至少应该提一下.

visual-studio-2013

44
推荐指数
5
解决办法
2万
查看次数

合并为master时,为什么要删除功能分支?

我见过的大多数git工作流建议branch在合并到master之后删除它.例如,这个gitflow建议如下:

# Incorporating a finished feature on develop 
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
Run Code Online (Sandbox Code Playgroud)

我为什么要删除分支?我也好奇当以后发现一个由该功能引入的错误时该怎么做 - 我是否应该再创建一个具有相同名称的分支,修复那里的bug,合并到master并再次删除分支?

git git-flow

35
推荐指数
1
解决办法
6540
查看次数

实体框架异常:无效的对象名称

我正在尝试使用Code First方法创建数据库.当我运行以下代码时,我收到以下异常.我定义的字段有什么问题吗?我们怎样才能克服这一点?

例外:

更新条目时发生错误.有关详细信息,请参阅内部异常

内在例外:

"无效的对象名称'dbo.Dinners'.

注意:我在数据库中没有这样的表(Dinners).该代码应该创建表.我只是给了连接字符串来识别EF Code First中提到的服务器:无法连接到SQL Server.我应该更改连接字符串吗?

连接字符串:

string connectionstring ="Data Source = .; Initial Catalog = LibraryReservationSystem; Integrated Security = True; Connect Timeout = 30";

LibraryReservationSystem数据库已经是现有数据库.它没有桌子.我期待EF创建表格.

我从一个正在运行的LINQ 2 SQL应用程序复制的连接字符串.我是否需要对其进行任何更改才能提供给EF?

在此输入图像描述

UPDATE

当我包含以下代码时,异常发生了变化.现在它说 - "无效的对象名称'dbo.Dinner'.".现在正在抱怨餐桌; 不是晚餐表.

    protected override void OnModelCreating(DbModelBuilder modelbuilder)
    {
        modelbuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
Run Code Online (Sandbox Code Playgroud)

原始代码

    static void Main(string[] args)
    {

        string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";

        using (var db = new NerdDinners(connectionstring))
        {
            var product = new Dinner { …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework

27
推荐指数
2
解决办法
4万
查看次数

$ {basedir}位于哪里,使用NLog?

除非我完全失踪了,我的印象中NLOG文档使用${basedir}在它的例子,没有解释什么是它的位置应该是.

在哪里可以找到列出所有可能选项的信息?

我定义了这个配置:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
  <targets>
    <target name="file" xsi:type="File"
                layout="${longdate} ${logger} ${message}"
                fileName="${basedir}/logs/${shortdate}.txt"
                keepFileOpen="false"
                encoding="iso-8859-2" />
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="file" />
  </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

它的工作范围我可以告诉,但我还没有得到任何记录在哪里的线索.

.net c# vb.net logging nlog

26
推荐指数
2
解决办法
3万
查看次数

VB.net需要文本框才能接受数字

我是VB.net的新手(自学成才),只是想知道是否有人可以帮我解决一些代码问题.我不是想做任何太多涉及的事情,只是TextBox接受一个从1到10的数值.我不希望它接受一个字符串或任何高于10的数字.如果有人输入一个单词或字符的错误信息将出现,告诉他输入有效的号码.这就是我的意思; 显然它不是很好,因为我有问题.再次感谢任何可以提供帮助的人.

 If TxtBox.Text > 10 Then
        MessageBox.Show("Please Enter a Number from 1 to 10")
        TxtBox.Focus()
    ElseIf TxtBox.Text < 10 Then
        MessageBox.Show("Thank You, your rating was " & TxtBox.Text)
        Total = Total + 1
    ElseIf IsNumeric(TxtBox.Text) Then
        MessageBox.Show("Thank you, your rating was " & ValueTxtBox.Text)
    End If

    ValueTxtBox.Clear()
    ValueTxtBox.Focus()
Run Code Online (Sandbox Code Playgroud)

vb.net textbox numbers

25
推荐指数
5
解决办法
28万
查看次数

如何使用VB.NET将JSON发布到特定的URL?

我是VB.NET中Web服务的新手.我正在制作一个与JIRA(http://www.atlassian.com/software/jira/)交谈的桌面应用程序.他们提供了我决定使用的REST api.第一步是登录他们说...

"要登录JIRA,您需要以JSON格式POST一个用户名和密码......"

{"username":"admin","password":"admin"}

这个网址......

https:// addressgoeshere(我们使用的是https)

有人可以给我一个示例代码来做这个,所以我可以有一个指南和一个良好的开端?请非常感谢!

vb.net post json web-services

21
推荐指数
1
解决办法
7万
查看次数