Tag: 安全性

如何使用SMTP发送安全电子邮件

我目前正在使用Google Apps发送SMTP电子邮件。 如果我的项目部署了我将要发送的一些信息将是保密的,我想确保传输是安全的。 任何人都可以让我知道我需要做什么,以确保我通过谷歌应用程序smtp服务器使用smtp发送安全的电子邮件? smtp.google.com。 任何帮助非常感谢。 据我所知,我需要强制使用Https并拥有SSL证书才能执行此操作。 我不知道这是真的吗?

我需要建议开发敏感数据传输/存储/加密系统

介绍 我目前正在开展一个项目,该项目涉及从VisualFox Pro数据库中每日提取数据(药房记录),并将其中的一些上传到WordPress网站,药房的客户可以安全地查看它。 我想在我的软件的一般方法方面提出一些建议 – 我能够对其进行编码,但需要知道我是否采用了正确的方法。 我正在编写PC软件(在C#/ .NET 4.5中)和PHP WordPress插件。 问题1:加密 我计划使用的加密数据服务器端的当前进程基于本文 。 总而言之,它主张用存储在服务器上的自己的公钥非对称地加密每个单独的用户数据。 然后,用于解密该数据的私钥本身使用用户的密码对称加密并存储。 这样,即使数据库被盗,也需要破坏用户的密码哈希,即使这样,也需要为每个用户的数据重复该过程。 作者本人指出的唯一弱点,以及我的问题的主要观点是,当用户登录时,解密的密钥存储在会话存储中。 文章建议处理它的方式是仅限制用户登录的时间。我认为更好的解决方案是将该密钥存储在短期安全cookie中(当然整个过程通过HTTPS进行) 。 这样,如果攻击者可以控制用户的计算机并且可以读取他们的cookie,他们可能只需键入密码并登录,无需窃取数据库,而即使攻击者获得对服务器的访问权限,他们也无法解密HTTPS流量(或者可以吗?我不确定。) 我应该使用安全cookie或会话存储来临时存储解密密钥吗? 问题2:存储 我还想解决的第二件事是如何存储数据 – 这更像是一个效率问题。 由于每个用户都有自己的加密密钥,因此每个用户的记录必须单独存储。 我不知道是否应该为每个用户存储一个“块”数据,包含带有表示记录的对象数组的加密JSON,或者我是否应该将记录存储在具有实际数据结构的表中,并加密每个数据字段与钥匙分开。 我倾向于将数据存储为一个块 – 在我看来,一次解密一个大块数据比使用数千个单独的字段更有效。 此外,即使我以正确的结构存储数据,我仍然无法使用MySQL的WHERE,ORDERBY等,因为数据都是BLOB。 我应该将数据存储为每个用户的大块,还是分成不同的字段? 问题3:转移 我从DBF文件中提取数据,并基本上形成一个“差异”,从而比较当前提取的数据和最后一天的数据,并只上传已更改的用户的块(我不仅可以上传记录,因为我可能最终将用户的数据存储在块中)。 我还为已被删除的用户添加了“删除”说明。 这是因为数据库中有数十万条记录,总计超过200mb,并且每天都会增加大小。 我目前的计划是将所有这些数据写入JSON文件,gzip并将其上传到服务器。 我的问题是,如何在确保数据安全的同时做到这一点? 当然,上传将通过HTTPS进行,我有一个API密码,只允许授权上传,但我主要担心的是如果服务器受到损害,如何保护数据。 我不希望攻击者只是在处理服务器时从服务器获取JSON文件。 我的一个想法是让服务器向我发送用户的公钥列表,并在上传之前在我的软件中执行加密。 在我看来,这是保护数据的唯一方法。 我可以加密整个JSON文件,可能使用API​​密钥或特殊密码,但如果攻击者可以在服务器上处理解密文件时只是访问解密文件,那就没有实际意义了。 这是一个好的解决方案吗? 我应该在客户端单独加密数据,还是有办法将其安全地传输到服务器并在那里加密? 在此先感谢任何答案,我很想听到之前处理过这类问题的人。 注意: 交叉发布给程序员 ,请参阅注释。

Billion Laughs Attack是否应该在C#中运行?

我试图从MSDN杂志页面测试XML代码,它说下面的代码行将导致处理时内存使用量增加到3GB。 <!DOCTYPE lolz [ ]> &lol9; 当我尝试将该文本粘贴到Visual Studio中的xml文件中时,确实显示内存和CPU使用率都有所增加。 但是,当我尝试将其放在文本文件中而不是XML文件并使用c#加载它时,它没有任何影响。 更新:我认为LoadXml方法应该有影响,但我想这不是处理部分。 当我试图得到第一个孩子时,它(即c#)抛出一个exception,告诉MaxCharactersFromEntities超出了MaxCharactersFromEntities 。 更新:这里也是我的代码: using System; using System.Xml; namespace BillionLaughsAttack { class Program { //The file containing the billion laughs mentioned previously //a txt file: Since an xml file causes visual studio to parse static String xmlFileLocation = “./MyData/DeepXML.txt”; static void Main(string[] args) { String xmlContent […]

我们应该实施什么来授权客户使用我们的网络服务?

我们有一个Web服务,我们将在公共Web服务器上托管,它将通过托管在医院墙内的Web服务器上的Web服务进行联系。 我们已经编写了两个软件,因此我们可以完全控制实现的内容。 我们希望保护两个Web服务器之间的通信。 目前我们唯一拥有的是公共Web服务器上的https和用于识别客户端的guid。 我们可以支持网络级别的授权,但我不喜欢依赖这些,因为并非所有客户(医院)都可以做同样的事情。 有些人无法为我们提供静态IP,有些人无法使用VPN,因此我们无法完全依赖这些方法。 您使用了哪些技术或建议您授权与Web服务进行通信? 我们主要关心的是让人们无法获得医院ID(目前只是一个GUID)并从我们的医院Web服务中获取数据。 我们将采用其他网络级别的安全措施来限制公众对我们系统的访问,但我觉得软件解决方案也是必要的。 该系统尚未投入生产,但即将完成开发。 它是在C#on .net 3.5上开发的 FWIW我正在考虑某种基于令牌的授权,因为我知道以前的雇主在这些方面使用了某些东西。 但是,我不知道具体要查找的内容或有关该主题的任何其他信息。 编辑:虽然我想使用WCF,但目前团队中没有人(包括我自己)有任何使用它的经验,我们已经开发了Web服务以及与它们交互的代码。 所有使用.net 2.0方法添加的Web引用(来自vs.net08,目标是.net 3.5),我们宁愿不完全重做。 我不会说WCF不是一个选项,但我认为我们不会随意使用该选项。

如何禁用wpf webbrowser控件上的drop

如何禁用System.Windows.Controls.WebBrowser上的文件丢弃? 从文档中可以看出,默认情况下应禁用此行为,因为它是从UIElement.AllowDrop属性inheritance的。 但是dy默认我可以将文件拖放到WebBrowser控件上。 除此之外,我似乎无法禁用这种假设的非默认行为。 例如,如果我在XAML中将该属性的值显式设置为false ..和/或代码隐藏,即 webBrowser1.AllowDrop = false; 然后我仍然可以将文件拖放到控件上。 如何禁用此行为并消除其创建的安全风险?

在线c#解释安全问题

我正在考虑建立一个在线C#解释器的想法,有点像Codepad 。 现在有明显的安全问题: 无限循环 System.Diagnostics.Process.Start 几乎整个System.IO命名空间 我对C#的了解并不是那么微不足道,但我确信有很多关于它的知识,以及我没有想到的东西。 你会注意什么? 一些精确,我计划在使用Mono的小型Linux VPS上运行它。

在ASP.NET(C#)中实现安全,独特的“一次性”激活URL

我有一个场景,我正在构建的网站的用户需要能够在不必登录的情况下将一些基本信息输入到webform中。 该站点正在使用ASP.NET / C#开发,并使用MSSQL 2005作为其关系数据。 将向用户发送来自站点的电子邮件,为他们提供唯一链接以输入他们所需的特定信息。 该电子邮件与我们在注册论坛等网站时所获得的电子邮件风格非常相似,其中包含一个随机生成的唯一URL参数,专门用于单一目的(例如validation论坛的电子邮件地址)。 我的问题是关于这个问题的安全实现。 我正在考虑使用GUID作为唯一标识符,但我不确定它在安全领域的影响。 GUID是否足够长,以至于不能轻易猜到值(或随着时间的推移强迫)? .NET的GUID实现是否足够随意,因为在“密钥空间”中生成所有可能值的机会相等? 如果使用GUID是一种可接受的方法,那么网站是否应该通过URL重写或通过将数据表中的信息与GUID相关联来重定向到信息? 使用URL重写会隐藏数据的真正来源吗? 我应该考虑使用TSQL的SELECT NEWID()作为.NET实现的GUID生成器吗? 我对这个问题的处理方法完全错了吗? 非常感谢, 卡尔

.NET安全内存结构

我知道.NET库提供了一种以受保护/安全的方式存储字符串的方法= SecureString。 我的问题是,如果我想存储一个字节数组,最好的,最安全的容器是什么?

从C#代码中避免在MSSQL Server上注入SQL的算法?

什么是避免在C#.net平台上进行SQL注入的最佳方法。 如果有的话,请发布C#实现。