首页 > 解决方案 > 有没有办法阻止来自另一台服务器的查询?

问题描述

我制作了一个 Json Web 令牌来保护我的服务,但现在有人使用我的登录服务对我的数据库进行了很多查询。有没有办法阻止来自另一台服务器的查询?

对我的服务器的查询或攻击来自不同的 ips 和不同的国家。

我使用 Angular 9 和 asp.net 核心。

// POST: api/Login
    [HttpPost]
    [AllowAnonymous]
    public async Task<IActionResult> Login(UsuarioLogin usuarioLogin)
    {
        var _userInfo = await AutenticarUsuarioAsync(usuarioLogin.Usuario, usuarioLogin.Password);
        if (_userInfo != null)
        {
            return Ok(new { token = GenerarTokenJWT(_userInfo) });
        }
        else
        {
            return Unauthorized();
        }
    }

标签: asp.netangularsecurityasp.net-core

解决方案


在 ASP.NET Core 中启用跨域请求 (CORS)

启用 CORS 的三种方法:


带有命名策略和中间件的 CORS

public class Startup
{
    readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(name: MyAllowSpecificOrigins,
                              builder =>
                              {
                                  builder.WithOrigins("http://example.com",
                                                      "http://xxxx.com");
                              });
        });

        // services.AddResponseCaching();
        services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();

        app.UseCors(MyAllowSpecificOrigins);

        // app.UseResponseCaching();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

推荐阅读