如何保护存储在web.config中的密码?

 遗忘不能忘 发布于 2023-02-06 18:04

我在web.config文件中添加了以下设置,以启动对外部系统的API调用.所以我存储API URL +用户名+密码如下: -


    
    
     

然后在我的action方法中,我将在构建Web客户端时引用这些值,如下所示: -

public ActionResult Create(RackJoin rj, FormCollection formValues)
        {
           XmlDocument doc = new XmlDocument();
           using (var client = new WebClient())
                {
                    var query = HttpUtility.ParseQueryString(string.Empty);
                    foreach (string key in formValues)
                    {
                        query[key] = this.Request.Form[key];
                    }

                    query["username"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiUserName"];
                    query["password"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiPassword"];

                    string apiurl = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiURL"];

但在这一点上,我将公开用户名和密码,这些可以被用户捕获,所以我的问题是如何保护API用户名和密码?

2 个回答
  • 通常,web.config是一个安全文件,IIS不提供它,因此它不会向向Web服务器发出请求的用户公开.Web服务器只提供特定类型的文件,web.config肯定不是其中之一.

    通常,您将数据库连接字符串保存在其中,其中包括密码.现在想象一下web.config不安全的场景.您已为应用程序创建了主要的安全威胁.

    因此,特别是只要你的项目不是太大,你就不应该担心它.

    然而,您可能有更好的方法,但创建一个名为"资源"的项目,并保存所有关键信息,如设置,consts,枚举等.这将是一个光滑和有组织的方法.

    如果您通过网络传递用户名/密码(例如,在安全的API调用的情况下),您可能希望使用https来确保正在传输的信息是加密的,但这与安全性无关web.config文件.

    2023-02-06 18:06 回答
  • 您可以使用aspnet_regiis加密web.config.这是为了阻止有权访问您服务器的人员阅读敏感信息.

    顺便说一句,我会把你的配置设置放在一个类中,然后可以将它注入你的控制器 - 这将使单元测试更容易.

    2023-02-06 18:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有