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&lt;MySettings&gt; 用于控制器测试的控制器构造函数,以及如何让这些值传递给服务测试中的服务方法。

【问题讨论】:

Integration test with IOptions<> in .NET Core的可能重复 【参考方案1】:

只需引用 Options 包并使用

IOptions<MyOptions> options = Options.Create(new MyOptions()

    ...
);

请参阅here 获取源代码参考。

【讨论】:

以上是关于asp.net程序已经被注入了,该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 怎么防止SQL注入攻击啊???

ASP.NET 中 SqlParameter是啥?具体怎么用?

c# ASP.NET怎么判断客户端中的软件进程是不是运行?

ASP.NET Core使用功能开关控制路由访问(续)

在 asp.net mvc 中处理 javascript 注入

ASP.NET如何防止SQL注入