Tag: security

渲染控件会在.Net 4中生成安全性exception

我遇到的问题是在.NET 2.0中运行良好但在.Net 4下出现此错误的代码。 构建(Web):覆盖成员时违反了inheritance安全规则:’Controls.RelatedPosts.RenderControl(System.Web.UI.HtmlTextWriter)’。 覆盖方法的安全性可访问性必须与被覆盖的方法的安全性可访问性相匹配。 这是在DotNetBlogEngine中。 .NET 4.0似乎不喜欢代码中的其他一些安全需求。 我按照我在博客(和这里)找到的一些建议,并摆脱了所有其他错误。 但这个仍然让我望而却步。 主BlogEngine核心dll不再针对安全性需求而设置,也是针对.NET 4.0编译的。 此错误在网站端尝试使用dll 。 有些控件使用HtmlTextWriter调用RenderControl方法。 显然,文本编写器现在设置了一些软安全属性。 每个控件都实现了一个自定义接口( public interface ICustomFilter ),没有安全权限或要求。 该站点在我的本地开发机器上运行完全信任。 更新: 我已经尝试了.NET 4中安全命名空间下的各种设置。 我知道这是一个代码访问安全性更改,但我不明白它背后的原因(或错误消息)。

通信安全:Fiddler拦截我的谈话。 我如何保护我的应用程序?

我构建了一个GData应用程序并发送了我的Google凭据以使用我的帐户。 Fiddler可以轻松拦截我的通信并显示用户名和密码。 有什么方法可以防止窥探? 如果不是,有人可以轻松揭示我的密码…… POST https://www.google.com/accounts/ClientLogin HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: www.google.com Content-Length: 109 Expect: 100-continue Connection: Keep-Alive Email=xxxxxxxxxx%40gmail.com&Passwd=veryhigh-secure-ultra-strenght-passord-is-this-HHDGdgddhdyhghdeeehdeg^3h37373dE^^^+–XXXxxx123123h37ddg3g36dhjfhfg6373udbgd634t&source=database&service=writely&accountType=HOSTED_OR_GOOGLE 附加:我们了解Google Docs的公共SSL证书。 我们可以检查一下它是在客户端的PC上使用还是有假的? 有帮助吗? 更新和结论: Fiddler充当中间人并在Windows的受信任的根证书中注入假根证书。 商店。 然后为目标站点生成假证书。 浏览器使用伪造的认证 – 公共密钥 – 并加密和发送数据给Fiddler本身。 Fiddler使用伪根证书-private密钥解密数据。 然后使用远程站点的原始认证并加密数据并发送到目标站点。 对响应浏览器反向重复相同的操作。 我只是问如何在另一个问题上检测这些假certificate。 如果我使用.NET构建一个简单的应用程序,应用程序将依赖并使用Windows的“默认/存储”认证用于目标站点。 如果没有,Fiddler将动态生成一个。 所以… 我不依赖Windows上的证书并直接从目标站点获取真实证书/或者我必须在我的应用程序中包含有效的目标站点证书。 我必须修改Google Data API的源代码,以便在我的https通信中使用我附带的-authentic one-SSL证书 – 一个简单的.crt文件。 因此,数据将在我的应用程序中加密,并仅在目标站点解密。 保护记忆 – 让事情变得更难 – 是下一步。 我已经把这些东西写成了未来的参考,以便谁来研究相同的主题并得到你的认可。 谢谢。 有人已经提到假证书: 用DNS探测中间人的攻击作者:Jason […]

基于证书的身份validation的基础

我搜索了很多,并找到了很多关于如何在wcf中实现基于证书的身份validation的答案。 但我的问题与其基本原理有关。 在生产中实施基于证书的身份validation时,客户端是否提供了服务器需要在其受信任的人员存储中添加的证书? 或者服务器提供证书(由服务器签名)。 我想在配置wcf服务器时,我们只需配置证书位置和存储。 我们永远不会将它与任何域绑定。 因此,出示此证书的任何客户都可以访问我的服务。 如果证书需要绑定到域。 他们为什么不能只允许来自该域的所有请求。 当客户端调用wcf服务时,它会显示其证书。 该证书是否只带有公钥? 并且这个证书可以被窃取(因为它在网络上传播)并被黑客用来使用Web服务。 我知道ssl如何炒作。 在ssl的情况下,浏览器负责所有这些东西但是在wcf服务的情况下(当我们只想允许特定客户端访问我们的服务时)如何管理它。 提前致谢。 让我简单一点: 我想创建一个Web服务,我希望三个客户端(A,B和C)可以使用它。 我想通过证书validation这三个客户端。 在设置时,这些客户是否需要将证书发送给我。 或者我必须为他们创建证书? 客户端是否也会共享他们的私钥(在设置时) 我是否需要将这些证书放入受信任的人员商店? 当他们请求Web服务时,他们将出示他们的证书(仅限公钥)。 如果他们只使用公钥呈现,黑客可以窃取此公钥并请求我的网络服务。 我的web服务如何区分黑客/实际客户端。

如何使用.NET P / Invoke CryptUIWizExport函数

任何人都可以将这两个cryptui.dll函数/结构翻译成C#.NET [dllimport]包装器吗? 我想P / Invoke CryptUIWizExport函数来显示Windows证书导出向导。 特别是,我需要将.NET X509Certificate作为参数传递给CryptUIWizExport函数。 非常感谢你的帮助! CryptUIWizExport函数 BOOL WINAPI CryptUIWizExport( __in DWORD dwFlags, __in HWND hwndParent, __in LPCWSTR pwszWizardTitle, __in PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo, __in void *pvoid ); typedef struct _CRYPTUI_WIZ_EXPORT_INFO { DWORD dwSize; LPCWSTR pwszExportFileName; DWORD dwSubjectChoice; union { PCCERT_CONTEXT pCertContext; PCCTL_CONTEXT pCTLContext; PCCRL_CONTEXT pCRLContext; HCERTSTORE hCertStore; } ; DWORD cStores; HCERTSTORE *rghStores; […]

通过ACL保护注册表项以删除对非管理员的所有访问权限

我正在尝试使用必须在客户端计算机上访问的一些重要信息来锁定注册表项,我不是非管理员可以访问此密钥。 如果您是管理员,您将能够比我在密钥中存储的更多损害。 我目前要做的是: //Allow access only to administrators and deny all rights to everyone else. System.Security.AccessControl.RegistrySecurity acl = new System.Security.AccessControl.RegistrySecurity(); acl.AddAccessRule( new System.Security.AccessControl.RegistryAccessRule( “Administrators”, System.Security.AccessControl.RegistryRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); acl.AddAccessRule( new System.Security.AccessControl.RegistryAccessRule( “Everyone”, System.Security.AccessControl.RegistryRights.FullControl, System.Security.AccessControl.AccessControlType.Deny)); //Prevent inherited read access from the software or company key allowing access. acl.SetAccessRuleProtection(true, false); MyKey.SetAccessControl(acl); 如果我说得对,这将拒绝所有人访问,允许显式访问管理员组中的任何人,并阻止所有inheritance的权限应用于我的密钥? 我想知道它是否会在我搞砸密钥上的ACL以便我无法删除之前等等。我是否应该将密钥的所有者设置为管理员组? PS:非常重要的是,密钥甚至不能作为非管理员读取,而不仅仅是更改。

用于承载令牌认证的Owin中间件,支持JWT密钥轮换

我正在寻找配置owin中间件承载令牌身份validation以支持Open Id Connect密钥轮换的一些指导。 Opend Id Connect规范说明了关于键旋转的以下内容: 可以使用以下方法完成签名密钥的旋转。 签名者在其jwks_uri位置的JWK集中发布其密钥,并在每个消息的JOSE标题中包括签名密钥的孩子,以向validation者指示将使用哪个密钥来validation签名。 可以通过在jwks_uri位置定期向JWK Set添加新密钥来覆盖密钥。 签名者可以自行决定开始使用新密钥,并使用kid值向validation者发出更改信号。 validation者知道返回到jwks_uri位置以在看到不熟悉的孩子值时重新检索密钥。 我在这个主题上可以找到的最相似的问题是: OWIN中的SecurityTokenSignatureKeyNotFoundException连接到Google的OpenID Connect中间件 解决方案不能正常工作,因为在发出新私钥和客户端刷新其公钥缓存之间会出现错误。 因此,我想配置客户端,以便在找到有效的,正确签名的,未过期的JWT令牌时下载丢失的公共JWK密钥,该JWT令牌具有不在本地缓存的孩子。 我目前正在使用IdentityServer3.AccessTokenValidation,但客户端在收到一个无法识别的孩子的令牌时不会下载新密钥。 我快速浏览了一下Microsoft.Owin.Security.Jwt – > UseJwtBearerAuthentication以及Microsoft.Owin.Security.OpenIdConnect – > UseOpenIdConnectAuthentication但我没有太过分。 我正在寻找一些方向来扩展/配置任何上述软件包以支持密钥轮换。

将文件复制到网络共享我无法访问

这是这个问题的延伸 我正在尝试将文件从本地用户临时文件夹复制到远程文件共享。 我无权访问远程文件共享,因此我必须冒充用户。 现在,我可以从远程服务器成功读取文件并在本地复制它,但是我无法将本地文件写入共享,因为它给了我错误: LOCAL文件的访问被拒绝(因为我现在正在模仿另一个用户)。 如果你需要一些代码,我可以发布它。

在安装.NET 4.5之后,ClaimsIdentity NullReferenceException

我在vs2010中开发了一个现有的.Net 4解决方案,该解决方案使用IIdentity实现来定义当前请求的用户。 我现在想用vs2012继续它的开发。 我在vs2012中打开了解决方案,并将属性中的目标框架设置为.Net 4.但是,当我运行解决方案时,当Web服务器反序列化GenericIdentity对象时,我得到一个exception。 例外情况发生在 at System.Security.Claims.ClaimsIdentity.d__0.MoveNext() at System.Security.Principal.GenericIdentity.OnDeserializedMethod (StreamingContext context) exception的原因似乎是未初始化属性Claims。 我所知道的: .Net 4.5在目标机器上更新.Net 4,而不是并行安装。 GenericIdentity现在来自.Net 4.5中的新类ClaimsIdentity 将目标框架设置为.Net 4意味着尽管代码仍在使用.NET 4.0运行,但4.5实现在封面下使用,即您无法在visual studio对象浏览器中看到层次结构,但调试器和reflection器显示了派生。 GenericIdentity.OnDeserializedMethod访问ClaimsIdentity Claims属性而不检查null,从而导致NullReferenceException 我遇到的一个解决方案涉及使我的自定义Identity对象inheritance自System.MarshalByRefObject,但问题是自定义Identity对象是由我们组织中所有系统使用的“单点登录”.dll提供的。 这意味着我无法访问它来更改其inheritanceheirachy。 这个问题有替代解决方案或工作方式吗?

访问修饰符的安全影响(公共,私有,内部,受保护)

C#,Java和其他编程语言中的类 , 属性或方法的访问修饰符实际上是否会影响应用程序的安全性? 他们是否也以某种方式防止未经授权的访问 ? 或者它们只是清晰和适当编程的工具?

SQL CLR触发器,如何通过透明代码调用关键代码使程序集受信任?

我已经潜入研究SQL CLR。 不幸的是,我的第一个例子有透明代码调用安全代码的问题 。 重点是我的SQL CLR触发器被视为透明代码。 在触发器中,我使用Quartz来调用Quartz Windows服务: var properties = new NameValueCollection(); properties[“quartz.scheduler.instanceName”] = “ServerScheduler”; properties[“quartz.scheduler.proxy”] = “true”; properties[“quartz.scheduler.proxy.address”] = string.Format(“tcp://{0}:{1}/{2}”, “localhost”, “555”, “QuartzScheduler”); var schedulerFactory = new StdSchedulerFactory(properties); IScheduler scheduler = schedulerFactory.GetScheduler(); 错误: (135,1):SQL72014:.Net SqlClient数据提供程序:消息6522,级别16,状态1,过程AfterMarketSessionInserted,第1行在执行用户定义的例程或聚合“AfterMarketSessionInserted”期间发生.NET Framework错误:System.MethodAccessException : 尝试通过安全透明方法 ‘.Database.Triggers.MarketSessionTriggers.AfterMarketSessionInserted()’ 访问安全关键方法 ‘Quartz.Impl.StdSchedulerFactory..ctor(System.Collections.Specialized.NameValueCollection)’ 失败。 Assembly’Database,Version = 1.0.5275.15169,Culture = neutral,PublicKeyToken = null’部分受信任,这导致CLR使其完全安全透明,而不管程序集本身是否有任何透明度注释。 为了访问安全关键代码,必须完全信任此程序集。 System.MethodAccessException:at Database.Triggers.FinancialMarketSessionTriggers.AfterFinancialMarketSessionInserted() ————– […]