iis / asp.net 使用 .config 和 .xml 文件的区别
由于在项目中有同学使用后缀为 .xml 的文件作为配置文件,而配置文件中有一些敏感信息被记录,如接口地址,Token,甚至还有数据库连接字符串。
以前都没想过为何微软会使用.config 的后缀在作为web.config,仅仅是为了直观吗? 众所周知,.config 实际也是.xml的一部分,是一个子集。理论上用 xxx.xml也是可以的。所以导致很多人习惯性的将很多配置文件以 .xml 的后缀使用。如果在网站中使用xml,如果不加以限制,是可以浏览.xml文件的内容的。如果你的.xml配置了敏感信息,等于埋了一颗雷。
举个日志配置的例子:
实际中随着项目的开发,可能很多功能都使用xml后缀为配置,没有做访问规则处理,如果被不怀好心的人扫描到网站目录,那将会很严重。
解决方式:
一、在iis中配置请求筛选,实际上为什么使用.config后缀,因为iis默认给添加了请求筛选,不需要自己去配置。这也是最主要的原因,次要原因.config也是直观上知道这个配置文件。
这是默认的.config配置
我们自定义添加一个隐藏段“configs”,把整个目录设置不能访问,然后试试效果
配置后会在web.config生成相应的配置
配置后的效果:
二、如果可以,在网站项目把.xml配置文件改为.config
但也仅限于是配置文件,如果只是普通的xml文件那也就没有必要使用.config的后缀。不同的业务使用不同的方式。
使用.config作为配置文件,也减少了网站维护人员的烦恼。如果万一哪天说我们网站被暴了,可能很久都查找不来问题。
可能有很多人都会忽略这个细节。特别是从桌面开发人员转过来开发网站项目的。。
本文内容未必完全正确,如有错误恳请指证,避免误人子弟,谢谢。
iis / asp.net 使用 .config 和 .xml 文件的区别的更多相关文章
- spring代码异常捕获到logback logging.config=logback-spring.xml文件中不能输出异常e.printStackTrace
在spring中使用logging.config=logback-spring.xml将日志转存到了文件中.但是代码中的捕获的异常无法用 e.printStackTrace 打印到文件中.使用如下方法 ...
- ASP.NET写入和读取xml文件
xml是一种可扩展标记语言,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 ...
- Asp.Net_抓包解析xml文件为json
protected void Button1_Click(object sender, EventArgs e) { string Phone = this.Txt_Con.Text; string ...
- 菜鸟学Java(八)——dom4j详解之读取XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- C# 读写XML文件示例
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...
- asp.net 生成xml文件 与 asp生成xml文件
一.asp.net 生成xml文件 webservice方式,调用接口: public XmlDocument List() { XmlDocument doc = new XmlDocument() ...
- ASP.Net Web.config 中引用外部config文件
1. 前提准备: Web.config file: <?xml version="1.0" encoding="utf-8"?><config ...
- IIS 之 通过 Web.config 修改文件上传大小限制设置方法
在IIS 6.0中,不设置默认大小为4M,设置文件上传大小的方法,maxRequestLength(KB),executionTimeout(毫秒),配置如下节点: <system.web> ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
随机推荐
- [UVAlive4297]First Knight
题面在这里 题意 给定一个\(n\times m\)的格网,从\((1,1)\)出发,每一格\((i,j)\)往上下左右移动的概率已经给出,询问到达\((n,m)\)的期望步数 数据范围 \[n,m\ ...
- 华为悦盒 EC6108V9U 破解过程全记录(root扫盲) [原创]
电信宽带送的 IPTV 盒子,CPU 为 Hi3798M,1G 内存,8G 存储,支持 H.265 硬解码,系统为 Android 4.4.2,却只能看电视,岂不浪费?好在华为厚道,还是留了后门供 D ...
- CSS中的各种FC
什么是FC? Formatting Context,格式化上下文,指页面中一个渲染区域,拥有一套渲染规则,它决定了其子元素如何定位,以及与其他元素的相互关系和作用. BFC 什么是BFC Block ...
- UWP:使用Composition实现类似安卓的水波纹Ripple效果
先放效果图: 首先,建立一个RippleHelper.cs文件,然后建立以下附加属性: IsFillEnable:是否扩大到整个控件 RippleDuration:持续时间 RippleRadius: ...
- Oracle用户、授权、角色管理
创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...
- Y2 MyBatis(二)
春节后的第一次课 1.整合日志(log4j和logback) (1)log4j和logback都是一个日志记录框架 (2)appender记住两个 stdout控制台显示日志,file记录文件中 (3 ...
- 对JS prototype的理解
1.什么是prototype? function F() {} f1 = new F();f2 = new F(); 以上的代码,F()是一个构造函数,f1和f2是由这个构造函数产生的对象. prot ...
- Jersey+mybatis实现web项目第一篇
---恢复内容开始--- Jesery第一篇:实现Jesery前后台页面交互,Form表单提交,后台控制页面跳转 该项目中有实现的功能: Mybatis实现后台数据持久化 Jersey页面数据提交 后 ...
- ES6的generator函数
generator是什么? generator是ES6提供的一种异步编程解决方案,在语法上,可以把它理解为一个状态机,内部封装了多种状态.执行generator,会生成返回一个遍历器对象.返回的遍历器 ...
- ASP.NET MVC编程——控制器
每一个请求都会经过控制器处理,控制器中的每个方法被称为控制器操作,它处理具体的请求. 1操作输入参数 控制器的操作的输入参数可以是内置类型也可以是自定义类型. 2操作返回结果 结果类型 调用方法 备注 ...