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

<appSettings>
    <add key="ApiURL" value="https://...../servlets/AssetServlet" />
    <add key="ApiUserName" value="tmsservice" />
    <add key="ApiPassword" value="test2test2" /> 

然后在我的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用户名和密码?

推荐答案

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

通常,您会在其中保存数据库连接字符串,其中包括密码.现在想象一个场景,web.配置不安全.您对应用程序造成了重大安全威胁.

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

不过,您可能有更好的方法,但需要创建一个名为"资源"的项目,并将所有关键信息(如设置、常量、枚举等)保存在其中.这将是一种巧妙而有组织的方法.

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

Asp.net相关问答推荐

在 Web.Config 的 Location Path 元素中指定多个目录

从数据库中检索数据的最快方法

'Access-Control-Allow-Origin' 标头包含多个值 '*, *',但只允许一个

EntityFramework 通过 ID 获取对象?

有没有办法在外部 javascript 文件中使用<%= someObject.ClientID %>?

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

可空日期时间转换

防止在 Visual Studio 2008 ASP.NET Web 窗体中复制粘贴时自动生成 ID

在 ASP.NET 中使用 Messenger Connect 客户端库时出现 Javascript 错误

ASP.NET 中的全局资源与本地资源

如何在 ASP.NET 站点中添加 favicon.ico

回发后 Document.Ready() 不起作用

如何获取正在访问 ASP.NET 应用程序的当前用户?

Web.Config 中的 Assemblies node 的用途是什么?

如何在 ASP.NET MVC 中设置时区?

如何将 LINQ 左外连接限制为一行

Cache.Add 绝对过期 - 是否基于 UTC?

不同域的登录页面

盒式磁带包与 MVC4 包

如何将代码中的变量调用到aspx页面