Tag: 安全

什么是浏览器代理商的东西?

我是ASP.NET新手,想要捕获有关我网站上人员的详细信息。 所以我将Request.UserAgent属性捕获到文件中。 任何人都可以解释如何解构这些,所以我知道他们的意思吗? 我实际上被我看到的一些用户代理所困扰。 例子: IE2.0d; WinNT: Mozilla/1.22 (compatible; MSIE 2.0d; Windows NT) IE2.0d; WinNT: Mozilla/1.22 (compatible; MSIE 2.0d; Windows NT) :从来没有听说过IE2.0,这对于扫描我的网站是多么的欺骗,为什么? 另外,在这种情况下IE如何与Mozilla相关? IE6.0; WinXP: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; .NET CLR 1.1.4322; yplus 4.4.02b) IE6.0; WinXP: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; YPC 3.0.2; .NET CLR 1.1.4322; […]

IOException:“客户端不持有所需的权限。”克服的最佳方法是什么?

我正在使用C#编写Winform应用程序。 在尝试创建文本文件时,我收到错误“客户端未保留所需的权限”。 我用Google搜索,与用户的权限有关。 简单地说,我不允许在我选择的路径中创建一个文件,即C:/ 试过这个解决方案: http : //www.technitips.com/2010/06/a-required-privilege-is-not-held-by-the-client-windows-7/ ,只工作过一次。 克服这种错误的最佳方法是什么? 我应该更改整个Window的安全设置吗? 或者将路径更改为不需要管理员权限的地方?

在clickonce应用程序中安全地存储服务帐户凭据

我正在编写一个ClickOnce应用程序,它运行带有服务帐户凭据的批处理文件进程。 我需要存储服务帐户凭据,以便程序可以在运行进程之前将用户名/密码添加到process.startinfo属性中。 用户不知道此密码,因此没有提示他们输入密码。 我相信这意味着我无法存储哈希并以这种方式validation密码,我生成的哈希值必须是可逆的,以便它可以将正确的密码添加到startinfo属性。 我在这个网站上搜索并提出了一个可行的Frankenstein类型的解决方案,但它不是很安全。 目前,我使用此方法加密密码,存储加密值,然后使用decrypt方法在运行时获取密码(加密方法在运行时从不运行,我在调试期间在Visual Studio中运行它,复制值,然后在下面的解密方法中使用该值): // used to generate decrypted acct creds private void EncryptText(string plaintext) { string outsrt = null; RijndaelManaged aesAlg = null; try { // generate key from secret and salt Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedsecret, _salt); aesAlg = new RijndaelManaged(); aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, […]

.NET WebAPI集中授权

在.NET WebAPI中,我创建了一种方法,将所有授权规则放在一个中心位置,而不是分散在整个控制器中。 我很好奇为什么这种集中化不会更频繁地进行; 有没有影响/安全问题? 我目前的方法是在App_Start期间创建一个包含所有授权数据的Dictionary,然后使用DelegatingHandler来应用限制(下面的代码)。 字典键是Controller和Action的元组,值是授权角色。 DelegatingHandler绑定到WebAPI的路由配置以获取调用哪个控制器,然后使用Dictionary来确定是否允许该请求。 字典: var authorizations = new Dictionary<Tuple, string>(); authorizations.Add(new Tuple(“values”, “get”), “public”); authorizations.Add(new Tuple(“values”, “put”), “private”); DelegatingHandler: public class SecurityDelegateHandler : DelegatingHandler { private readonly Dictionary<Tuple, string> _authorizations; public SecurityDelegateHandler(Dictionary<Tuple, string> auth) { _authorizations = auth; } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var config = GlobalConfiguration.Configuration; […]

ViewStateUserKey +共享主机+ ViewStateMacvalidation失败

所以,问题很简单,即使我开始怀疑这是否会得到回答…… 我有一个网站,我想用推荐的ViewStateUserKey保护我的viewstate .. 在我的基页(显然inheritance自Page)我有这样的代码: protected override void OnInit(EventArgs e) { base.OnInit(e); if (User.Identity.IsAuthenticated) base.ViewStateUserKey = Session.SessionID; } 在localhost上运行良好,但是,当我将其上传到托管(由我们的本地提供商提供的共享托管)时,它在我进行身份validation后给出了传统的“viewstate MACvalidation失败”错误。 如果我对这段代码进行评论,那就完美了,所以我很确定这是原因。 在共享主机上执行viewstate安全性的最佳方法是什么? 我已经设置了ViewStateMac =“Enabled”。 是否足够或推荐的解决方法是什么?

强制WebClient使用SSL

我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。 这很简单,但如何强制它使用SSL ?

混淆是可能的混淆

自从上一周以来,我一直在努力解决这个问题。 我混淆了我的应用程序的exe。 我们的应用程序是在线Web应用程序的离线工具 客户端将安装此应用程序并连接到Internet,应用程序将下载相关信息并存储在客户端计算机上的xml文件中以供进一步显示。 出于安全考虑,我们正在加密这些xml文件。 不幸的是,我们在exe内部有一个方法GetCryptXML,它将读取客户端机器上的加密settings.xml并在解密后返回它。 此setting.xml也包含其他xml的加密密钥。 我面临的问题是,即使在混淆之后,人也可以通过传递混淆的名称来调用GetCryptXML方法。 有什么方法可以解决这个问题吗? 这是我解决问题的想法,但我不确定如何实施。 我的想法:只有通过使用InvokeMember()函数进行reflection才能调用我的函数。 在可以调用此函数之前,他/她需要使用此函数来加载程序集。 Assembly.LoadFrom(“myapplication.exe”) 如果myapplication.exe中的代码可以识别哪个应用程序试图加载我,那么我们可以限制它们加载,如果它不是应用程序。 我不知道怎么解决。 任何帮助是极大的赞赏。 谢谢。

线程可以作为另一个用户执行吗? (.NET 2.0 / 3.5)

我有一个C#应用程序执行一些包含计算到动态程序集的源文件的运行时编译。 显然这是一个严重的安全问题。 从下面的“公式”中,将生成以下代码,并创建一个动态程序集: 式: Int32 _index = value.LastIndexOf(‘.’); String _retVal = value.Substring(_index + 1); return _retVal; 代码生成: using System; namespace Dynamics { public class Evaluator { public Object Evaluate(String value) { // Begin external code Int32 _index = value.LastIndexOf(‘.’); String _retVal = value.Substring(_index + 1); return _retVal; // End external code } } } 然后加载动态assembly,并通过Reflection执行Evaluate方法。 […]

单个方法的管理员权限

我目前正在开发ApplicationLauncher / Autoupdater。 因此,要将应用程序安装/更新为“Program Files”,我需要请求管理员权限。 好吧,因为如果找到新版本,Updater只需要写一些东西,我试图只在发现新版本时才请求这些特权。 在应用程序启动之前,每次都会执行更新程序,因此请求“每次”管理员都没有解决方案…… 我搜索了很多,发现了以下内容: [PrincipalPermission(SecurityAction.Demand, Role = @”Administrators”)] private void InstallOrUpdate(AppItem appItem) 但我想尝试这个,更新程序抛出一个SecurityException … 申请主要许可失败。 我究竟做错了什么? 最好的问候,dognose

从密码字符串派生加密密钥和IV时,可以使用密码的SHA1哈希作为盐吗?

我正在使用Rfc2898DeriveBytes从用户提供的字符串密码安全地生成加密密钥和初始化向量,以便与对称加密一起使用(例如AesManaged)。 我将密码的SHA1哈希作为盐参数提供给Rfc2898DeriveBytes 。 这可以吗? 如果没有,那么我应该从哪里获取盐? 解密时我需要相同的盐,对吧? 所以我必须将它存储在未加密的地方 – 不安全。 如果我必须安全地存储它,那么它只是成为另一个“密码”,不是吗? void SecureDeriveKeyAndIvFromPassword(string password, int iterations, int keySize, int ivSize, out byte[] key, out byte[] iv) { // Generate the salt from password: byte[] salt = (new SHA1Managed()).ComputeHash(Encoding.UTF8.GetBytes(password)); // Derive key and IV bytes from password: Rfc2898DeriveBytes derivedBytes = new Rfc2898DeriveBytes(password, salt, iterations); key = derivedBytes.GetBytes(keySize); […]