asp.net程序已经被注入了,该怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net程序已经被注入了,该怎么办?相关的知识,希望对你有一定的参考价值。
我写了个asp.net程序,假设已经被注入了。该怎么办?怎么解决?
注入主要指的数据库注入,如果遇到注入的情况 比如别人删掉了你的表 那没有办法的 所以最好你定时对重要的信息进行备份.有效防止注入的办法就是多使用参数进行与数据库的信息传递,而不要使用简单的拼接字符串 并且在重要的页面规定好只能从哪个页面跳转过来 不能由其他页面跳转进来. 参考技术A 1.修改程序,所有SQL语句都不要使用拼接,都必须使用参数。
2.还原数据库。不可能没有备份吧? 参考技术B 除了备份以外,别无他法。
在 .net core 上的单元测试中使用和注入 appsettings.json
【中文标题】在 .net core 上的单元测试中使用和注入 appsettings.json【英文标题】:Using and injecting from appsettings.json in unit tests on .net core 【发布时间】:2016-11-05 10:05:23 【问题描述】:我已经创建了一个 asp.net core web 应用程序和一个单元测试应用程序。
我使用“ASP.NET Core Web 应用程序 (.NET Core)”模板创建了 asp.net 应用程序,并使用“类库 (.NET Core)”模板创建了单元测试项目。
我使用以下文章中的说明配置了 MSTest:
Announcing MSTest Framework support for .NET Core RC2 / ASP.NET Core RC2
我已将应用程序组织成控制器和服务,控制器从 appsettings.json 读取值并将这些值作为参数传递给服务方法。
我有一个 AppSettings 类如下
public class AppSettings
public string Setting1 get; set;
public string Setting2 get; set;
public string Setting3etc get; set;
public static class App
public static AppSettings Settings get; set;
public static void ConfigureSettings(IOptions<AppSettings> settings)
Settings = settings.Value;
控制器构造函数如下
public ValuesController(IOptions<AppSettings> settings)
App.ConfigureSettings(settings);
在 Startup.cs 我在 ConfigureServices
方法中有以下行
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
我从下面的文章中了解了这种技术
Strongly Typed Configuration Settings in ASP.NET Core
这在运行时有效,但我在单元测试中访问这些设置时遇到了困难。
我正在尝试找到一种方法将 appsettings.json 中的值获取到我的测试项目中,以便我可以将它们传递给控制器和服务。
我的测试方法看起来像这样
[TestMethod]
[TestCategory("Service - Method1")]
public void ServiceMethod1Test()
// this compiles but gets null reference exception
var setting1 = App.Settings.Setting1;
var setting2 = App.Settings.Setting2;
var service = new Service(setting1, setting2);
var argument1 = "argument";
var actual = service.Method1(argument1);
var expected = "expected result";
CollectionAssert.AreEqual(expected, actual);
[TestMethod]
[TestCategory("Controller - Method1")]
public void ControllerMethod1Test()
// how do i create this settings instance?
var settings = ???
var controler = new ValuesController(settings);
var argument1 = "argument";
var actual = controller.Method1(argument1);
var expected = "expected result";
CollectionAssert.AreEqual(expected, actual);
我怎样才能传递一个实现的类的实例
IOptions<MySettings>
用于控制器测试的控制器构造函数,以及如何让这些值传递给服务测试中的服务方法。
【问题讨论】:
Integration test with IOptions<> in .NET Core的可能重复 【参考方案1】:只需引用 Options 包并使用
IOptions<MyOptions> options = Options.Create(new MyOptions()
...
);
请参阅here 获取源代码参考。
【讨论】:
以上是关于asp.net程序已经被注入了,该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 中 SqlParameter是啥?具体怎么用?