Tag: 安全

某些方法的WCF REST基本身份validation

我在WCF 4.0中实现了很多RESTful(GET和POST)方法。 所有这些都通过SSL工作。 一些方法的示例: [OperationContract] [WebInvoke(UriTemplate = “Login?”, Method = “POST”, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] LoginResponse Login(LoginRequest request); [OperationContract] [WebInvoke(UriTemplate = “UpdateDetails?”, Method = “POST”, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] UpdateUserDetailResponse UpdateDetails(UpdateUserDetailRequest request); [OperationContract] [WebInvoke(UriTemplate = “GetDetails?”, Method = “POST”, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, […]

如何在处理使用Facebook API调用的服务方法时透明地更新Facebook访问令牌?

我有一个在IIS 7.5和VS 2010中运行的WCF服务。此服务有一些方法在内部使用Facebook C#SDK (版本4.1,而不是最新版本),以便从/向Facebook执行一些GET和POST。 由于Facebook将很快删除 offline_access我必须处理访问令牌过期的情况。 我已经理解了执行身份validation的方式(为了获取代码并在获取访问令牌之后),以便使用Graph API获取Facebook信息(如此处所示 )。 我有两个问题: 调用我的服务方法并从我的数据库中检索相应用户的令牌时,有没有办法知道访问令牌是否已过期? 我已经读过 ,当执行Facebook API调用并且访问令牌过期时,会抛出以下exception: OAuthException 。 但有没有更好的方法来检测到期? 我不想 调用Facebook API 处理exception 最后更新访问令牌 使用新的访问令牌重复初始调用。 是否可以透明地更新用户的访问令牌(将其存储在数据库中)并继续处理服务方法? 在此资源中,缺少重要的(“更新访问令牌”)部分(声明为[todo]) 我想在服务方法的实现中实现以下方案: sc = SocialNetworkAccountDao.GetByUser(user) isExpired = call method to check if the sc.token is expired. if (isExpired) { newToken = call method for getting new access token sc.token = […]

文件上传安全关注

我有一个公开的网络表单,具有文件上传function。 现在,文件要么保存在Web服务器上,要么作为附件发送到电子邮件中。 我们对大小有限制,即15MB和上传文件的扩展名。 我们的SMTP服务器位于同一Web服务器上。 我担心安全问题,因为任何人都可以上传恶意文件并对我们的生产Web服务器产生影响。 公众可以使用这种文件上传控制有什么风险? 无论如何,有人可以通过上传恶意文件在Web服务器上执行恶意脚本。 我做了一些研究,发现了以下几点 如果我在电子邮件中将文件作为附件发送,则此文件将临时存储在Temporary ASP .Net文件夹中,一旦发送电子邮件,该文件将被删除。 您可以在将文件保存到文件系统之前重命名该文件。 您可以将文件保存在您的网站的不同位置 您可以进行某种实时病毒检查。 我不知道你怎么能这样做。 我正在阅读一些命令行病毒扫描。 但不确定我是否真的需要它。 这些只是几点,但我想知道文件上传中的任何盲点。

从c#将敏感信息存储在keepass数据库中

我有一个项目,我必须处理敏感数据。 你知道如何打开一个keepass数据库表单c#来使用数据吗? 我已经下载了这些来源。 我会看看它得到我需要的东西。 还有其他想法吗?

保护代码中敏感数据的最佳方法是什么?

我正在研究保护我的代码免受反编译的方法。 这里有几个好的线程描述了混淆和代码打包作为保护代码的可能方法。 但是,当使用字符串方法/属性名称时,混淆不适用于reflection。 很多人根本不建议使用混淆。 所以我现在决定不再使用上述任何一项。 但是 , 我有部分代码需要一种加密 ,例如,带有IP的数据库连接字符串,登录名和密码作为简单的const string存储在代码中,与电子邮件帐户数据相同。 在ASP.NET中,有一个选项可以将敏感数据移动到.config文件并对其进行加密,但这需要服务器密钥,即链接到单个计算机。 我没有读太多关于它,但我想类似的东西可用于桌面应用程序。 但我需要这个在任何安装了应用程序的计算机上工作。 这里有一个问题:是否有方法可以编码/保护这些数据,使其无法与反编译代码一起读取?

如何生成一次性密码(OTP / HOTP)?

我们决定通过为客户发布iPhone,Android和Blackberry应用程序开始进行多因素身份validation。 想想Google Authenticator的一次性密码系统。 我可以通过使用基于帐户密钥加上设备序列号(或其他唯一标识符)的SALT进行散列来生成唯一字符串 。 但有没有人知道如何以谷歌的方式生成一个独特的短数字? 和/或有没有人有任何关于实现这种事情的文章的良好链接? 非常感谢

你如何在你的DDD中编写身份validation,角色和安全性?

如何在C#域驱动设计项目中实现角色和安全性? 关于它是应该由调用应用程序(ASP.NET MVC)还是在域模型本身(模型实体和服务)中实现,我们有一些争论。 有些人认为它应该在网站本身,因为那是身份validation已经存在的地方。 但这意味着每次与核心业务系统集成时都必须重新实现安全性。 例如:管理员应该能够在系统中执行任何操作,例如编辑和删除记录(即他们可以删除用户的订单)。 另一方面,用户应该只能编辑和删除他们自己的记录(即他们可以在购物车中添加/删除项目)。 顺便说一句,这里有一个很好的论文,涵盖了有关DDD和安全性的7种不同场景: 域驱动设计中的安全性 第4章安全服务设计方案 4.1场景1:作为常规服务的安全服务 4.2场景2:UI中嵌入的安全性 4.3场景3:封装域模型的安全服务 4.4场景4:安全服务作为UI的网关 4.5场景5:安全服务作为UI的适配器 4.6场景6:AOP与适配器集成的安全服务 4.7场景7:与AOP集成的安全服务 我个人倾向于使用PostSharp进行AOP,但之前没有做过多少工作,我对犹豫不决。

如何在我的应用程序中存储秘密?

我在回答一个问题时建议使用.NET的加密库(例如AesManaged ),当我想知道:“但应该放置应用程序所使用的密钥?”。 我有一个秘密,我需要存储在我的应用程序中,应该由应用程序使用,但用户不知道,我不知道如何做到这一点。 我正在谈论的那种秘密不是与用户相关的东西(例如,用户对第三方服务的密码),而是用户不应该知道的与应用程序或开发人员相关的东西(例如,如果用户知道应用程序的他可以冒充OAuth客户端秘密冒充第三方服务)。 我知道Window的Credential Manager , Data Protection API等,但它们在这种情况下没有帮助,因为它们旨在保护用户的秘密,而且大多数都是运行时解决方案,而我需要保护的是“常量“和”编译时间“。 我完全知道我将采取的任何行动只会延迟熟练和确定的用户访问秘密,因为如果应用程序必须以明文forms访问它,用户也可以以某种方式访问​​它。 我正在寻找的是防止临时用户“在记事本中”打开应用程序并获取秘密。 我完全清楚,任何一种措施只会暂时阻止熟练和坚定的用户访问这样的秘密,我不是要求解决问题的防弹解决方案,我对除了编写var myClientSecret = “MySuperSecretClientSecretKey”;之外的其他选择感兴趣var myClientSecret = “MySuperSecretClientSecretKey”; 存储此类信息。 var myClientSecret = Encoding.UTF8.GetBytes(“MySuperSecretClientSecretKey”)是唯一的选择吗? 框架是否提供了帮助我完成此任务的任何内容?

如何在servicestack.net中实现身份validation

我正在调查servicestack.net – 但是它的示例和文章似乎没有涵盖身份validation – 这是由servicestack.net处理的 – 如果是这样的话? 特别是我有兴趣实现对以下方面的支持: OAuth(因此能够检查原始请求并validation它/检索关联的用户信息并在将请求传递到servicestack.net进行处理之前与请求关联)。 基于会话/ cookie的身份validation(因此允许已经具有有效ASP.Net会话的Ajax客户端将其用于身份validation,而不是需要显式传递登录和密码详细信息以获取适合随后请求提交的会话令牌)。 有人能指出我在使用ServiceStack.Net框架时certificate身份validation/安全性的文档/示例的方向。

这个.net应用程序的安全性是否有缺陷?

好的,我知道每个混淆的.Net应用程序都可以进行逆向工程。 而且我知道如果可能的话我会采用开源方式更好。 但不幸的是我不能,因为没有版权法来保护我居住的地方。 所以我想出了一个让它变得更难的计划。 由于我对安全性非常非常新手,我希望你能帮助我找到这个计划中的漏洞。 用户下载应用程序 用户输入他的用户名/密码并开始工作 他需要将结果导出为特定的文件格式 应用程序连接到服务器,并检查用户名/密码 创建文件所需的数据将发送到服务器 服务器在服务器上创建文件并将其发送回用户 现在,如果有人通过绕过用户名/密码破解程序,则检查文件将不会从服务器发送,并且他将无法获得他想要的文件,类似软件即服务。 现在我想知道这是否是正确的方法? 有什么建议让它变得更好?