簡體   English   中英

WebApi與.NET核心和json驗證

[英]WebApi with .NET core and json validation

我正在使用.NET core 2.0創建一些webapis。 我的驗證有問題。

[HttpPost]
public async Task<IActionResult> RegisterUser([FromBody] RegistrationModel model) {
    if (model != null && ModelState.IsValid)
    {
        // model is valid
    }
}

例如,RegistrationModel的定義

public class RegistrationModel
{
    [JsonRequired]
    [JsonProperty("emailAddress")]
    public string EmailAddress { get; set; }

    [JsonRequired]
    [JsonProperty("userCustomerId")]
    public string UserCustomerId { get; set; }
}

如果我通過這個json,那就是完美的匹配

{
    "emailAddress" : "test.email@gmail.com",
    "userCustomerId" : "b1cb8805-2a59-428e-9c2a-ec663093f84f"
}

我的問題是如果我傳遞帶有額外字段的json,模型仍然有效。

{
    "emailAddress" : "test.email@gmail.com",
    "userCustomerId" : "b1cb8805-2a59-428e-9c2a-ec663093f84f",
    "extraField": "Hello!"
}

基本上,webapi忽略了額外的字段,但我想發回和錯誤,像Model這樣的東西是無效的

我該如何實現呢?

這稱為疊加,可在此處找到一些緩解策略: https ://andrewlock.net/preventing-mass-assignment-or-over-posting-in-asp-net-core/

您可以添加自定義模型綁定器或自定義Json反序列化以防止疊加,但是它不值得 - 確保您的模型不易受攻擊並繼續前進。

為什么?

  1. 你接受的是自由主義者。

  2. 有時候客戶會發送一些額外的東西(比如像NewtonSoft.Json這樣的$ id屬性),並且停用這種行為會非常煩人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM