Tag: security

C#中的X509指南/教程

任何人都可以通过C#中的示例向我介绍X509证书的优秀介绍材料。

使用高级加密标准算法(AES)在TypeScript中加密字符串并在C#中解密

我很难在C#中使用打字稿和解密来实现加密。 在这里发布问题之前,我做了谷歌并找到了一些链接,但这些链接与JavaScript有关,而不是打字稿。 使用AES算法在javascript中加密并在C#中解密 使用angular2中的cryptojs库加密文本 如何在Angular 2中导入非核心npm模块,例如(使用加密库)? 我按照上面的链接,在我当前的应用程序中实现加密/解密概念。 这是我在myservice.ts中编写的代码 //import { CryptoJS } from ‘node_modules/crypto-js/crypto-js.js’; //import ‘crypto-js’; import * as CryptoJS from ‘crypto-js’; var key = CryptoJS.enc.Utf8.parse(‘7061737323313233’); var iv = CryptoJS.enc.Utf8.parse(‘7061737323313233’); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(“It works”), key, { keySize: 128 / 8, iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); var decrypted = CryptoJS.AES.decrypt(encrypted, key, { keySize: […]

从httprequest C#读取客户端证书

我试图使用Request.ClientCertificate读取X509证书,但没有返回任何内容。 证书肯定附加到请求,因为我可以从发送请求的页面获取证书信息。 我曾尝试从几个不同的地方阅读证书,但似乎无法让它工作。 我从这篇KB文章的代码开始。 在请求的页面中,我尝试打印出有关证书的一些信息,但响应中没有返回任何内容。 这是在IIS 5.1上运行,通信是通过SSL进行的。 这必须使用.Net框架的第2版完成 为什么证书似乎消失了?

PasswordBox和MVVM

我们有以下场景: 用户可以放置密码的MVVM用户界面(实际上是PasswordBox ) 应该做一些工作的服务器 服务器连接到需要validation的某个数据库 我已经在MVVM中的PasswordBox上阅读了这个问题 但是怎么办都没有答案! 只是很多“从来没有做过”。 传递密码的正确方法是什么? 如何解决安全问题? 没有正确的方法Binding到PasswordBox ,密码不会存储在某个地方,好吧。 那么,MVVM做这些事情的方式是什么? 即使模式被破坏,有没有一种很好的方法来实现这样的事情? 想到一个Func来检索它,但没有Binding这会弄得一团糟…… 更新相同以从(希望加密的)密码存储区初始化PasswordBox。 这不是打破MVVM模式吗? 用户每次启动应用程序时都不想输入密码,或者想要使用我相信的数据库。

从IIS 7/8中的静态内容中删除服务器标头

作为努力使我们的API和网站更安全的一部分,我正在删除泄漏有关网站运行信息的标题。 剥离标题之前的示例: HTTP/1.1 500 Internal Server Error Cache-Control: private Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 05 Jun 2013 00:27:54 GMT Content-Length: 3687 Web.config文件: 的Global.asax.cs: protected void Application_PreSendRequestHeaders() { Response.Headers.Remove(“Server”); Response.Headers.Remove(“X-AspNet-Version”); Response.Headers.Remove(“X-AspNetMvc-Version”); Response.AddHeader(“Strict-Transport-Security”, “max-age=300”); Response.AddHeader(“X-Frame-Options”, “SAMEORIGIN”); } 之后,对网站和API的所有调用都会返回更安全的标头,如下所示: HTTP/1.1 500 Internal Server Error Cache-Control: private Content-Type: text/html; charset=utf-8 Date: Wed, 05 […]

如何检查C#类是否使用了安全属性

如何检查并确保类使用我自己的自定义安全属性? 我知道我可以使用reflection来获取普通属性,但如果自定义属性基于安全属性,如下所示,则reflection不会显示它。 有没有办法检查? 为什么我需要这样做是为了确保加载到基于云的系统的插件必须使用安全属性,以便加载的类无法访问任何受限文件等等。 这是我正在使用的自定义安全类: public class PluginSection : CodeAccessSecurityAttribute { public PluginSection(SecurityAction action) : base(action) { } public override IPermission CreatePermission() { // WebSites.GetInstance().LocalBaseDir returns the base directory where the class has accesss to login return new FileIOPermission(FileIOPermissionAccess.Write, WebSites.GetInstance().LocalBaseDir); } } 我必须使用基于CodeAccessSecurityAttribute的类,以便FileIOPermission可以工作。 此外,如果有另一种方法来限制正在加载的插件的访问,我也可以使用它。

根据本地安全策略validation新的AD密码?

我想允许当前用户更改其密码(通过活动目录管理)。 我想validation然后在Active Directory中设置他们的密码(目前使用SetPassword调用方法 )。 我的问题是validation密码,以满足复杂性要求: 不包含用户的帐户名称或超过两个连续字符的用户全名部分长度至少为六个字符包含以下四个类别中的三个字符:英文大写字母(A到Z)英文小写字母(a到z) )基本10位数(0到9)非字母字符(例如,!,$,#,%)在更改或创建密码时强制执行复杂性要求。 我已经在使用带有两个文本框的CompareValidator ,所以我在考虑添加一个RegularExpressionValidator ( 源1 , 源2 ),但我不知道如何让它与整个“四个类别中的三个”一起工作: RegularExpressionValidator revComplex = new RegularExpressionValidator(); revComplex.ControlToValidate = _txtPassword1.ID; revComplex.ErrorMessage = “Password must have at least 7 characters. Characters should be from at least three of the following four groups: uppercase letter, lowercase letter, digit, or special characters (for example, !, $, […]

请参阅传递给程序的命令行参数

你可以跳过这一部分 我正在使用我的拇指驱动器中的批处理文件来安装真正的密码卷。 我借助此链接创建了该批处理文件。 在该批处理文件中,我有用户名和密码,我将其作为参数传递给trueCrypt.exe,以便安装它。 无论如何,我的问题是:是否可以看到从第三方进程传递给程序的参数? 换句话说,是否可以看到传递给该程序的参数: using System; using System.Reflection; using System.Diagnostics; class Program { static string password = “”; static void Main(string[] args) { if (args.Length > 0) password = args[0]; // get location where this program resides var locationOfThisExe = Assembly.GetExecutingAssembly().Location; Console.Write(“Press enter to start a new instance of this program.”); Console.Read(); var […]

Active Directory和PrincipalPermission

这更像是一种好奇心而不是请求帮助,但我注意到当使用PrincipalPermission并validation用户是Active Directory中特定组的一部分时,它不会使用真正的组名,而是针对Windows 2000之前的组进行validation而是改名。 通常这不会产生任何影响 – 除非有人碰巧使这些价值观有所不同。 任何人都可以想到为什么.Net API会使用该组名而不是“真正的”名称? 这给我带来了几个小时的悲伤和一点点的运气,最终弄明白了。

如何保护用.Net编写的API

这是SO中关于保护/混淆.Net应用程序的现有问题的变体。 我正在用C#开发一个API,其中包括一些我非常希望保护的算法。 我知道没有哪种方法是完美的,但是普遍接受的方法是什么? 我希望我的客户能够对API进行编码,但我不希望他们对内部的内容进行逆向工程(至少我不想让它们变得容易)。 如果我对代码进行模糊处理,那么这也不会混淆API吗? 我们正在关注smartAssembly的任何想法对产品的评论将不胜感激。