小编Mar*_*cks的帖子

在C#中手动验证JWT令牌

我在手动验证 Identity Server 4发出的JWT令牌时遇到了一些麻烦。

ClientId:“ CLIENT1” ClientSecret:“ 123456”

我不断收到的异常是:IDX10501:签名验证失败。无法匹配键:'[PII默认为隐藏。将IdentityModelEventSource.cs中的'ShowPII'标志设置为true以显示它。]“

有谁能告诉我我要去哪里错了。

    private static void ValidateJwt(string jwt, DiscoveryResponse disco)
    {        

        var parameters = new TokenValidationParameters
        {

            ValidateIssuerSigningKey = true,
            ValidIssuer = disco.Issuer,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("123456")),               
            ValidAudience = "CLIENT1",
            //IssuerSigningKeys = keys,
            // ValidateAudience = true,
            // ValidateLifetime = true,
        };

        SecurityToken validatedToken;
        var handler = new JwtSecurityTokenHandler();
        handler.InboundClaimTypeMap.Clear();

        try
        {
            var user = handler.ValidateToken(jwt, parameters, out validatedToken);
        }
        catch(Exception ex)
        {
            var error = ex.Message;
        }

    }
Run Code Online (Sandbox Code Playgroud)

c# jwt identityserver4

7
推荐指数
2
解决办法
3万
查看次数

在反序列化之前清除XSS for XSS

我正在使用Newtonsoft JSON解串器.如何为XSS(跨站点脚本)清理JSON?在反序列化或编写某种自定义转换器/消毒剂之前清理JSON字符串?如果是这样 - 我不是百分之百确定最好的方法来解决这个问题.

下面是JSON的示例,其中注入了危险脚本并需要"清理".我希望在我对其进行反序列化之前管理它.但是我们需要假设各种XSS场景,包括BASE64编码脚本等,所以问题比简单的REGEX字符串替换更复杂.

{ "MyVar" : "hello<script>bad script code</script>world" } 
Run Code Online (Sandbox Code Playgroud)

这是我的反序列化器的快照(JSON - > Object):

public T Deserialize<T>(string json)
{
    T obj;

    var JSON = cleanJSON(json); //OPTION 1 sanitize here

    var customConverter = new JSONSanitizer();// OPTION 2 create a custom converter

    obj = JsonConvert.DeserializeObject<T>(json, customConverter);

    return obj;
}
Run Code Online (Sandbox Code Playgroud)

JSON是从第三方UI界面发布的,所以它相当暴露,因此服务器端验证.从那里,它被序列化为各种对象,并且通常存储在DB中,以后可以直接在基于HTML的UI中检索和输出,因此必须减轻脚本注入.

c# security xss json

6
推荐指数
1
解决办法
3737
查看次数

将打字稿文件分组到多个outFile中

是否可以将打字稿文件分组到多个outFile中?我仍然希望将我的Typescript捆绑,但不要捆绑到一个JS文件中,我想将我的TS分组到几个JS文件,例如controllers.js,plugins.js.TypeScript项目选项似乎只提供一个outfile选项.

typescript

6
推荐指数
1
解决办法
695
查看次数

如果特定文件已更改,合并或构建会失败?

在 VSTS 上,我们想要在某些分支上保护一些文件。如果特定文件已更改,合并/构建如何会失败?

一等奖是在构建服务器上配置它,在本例中是 VisualStudio.com (VSTS / GIT)。

场景:我们有各种发布分支 v1、v2、v3。我们希望保护 packages.json 文件,以防止任何人更新这些分支上的 Nuget 包。因此,如果 package.json 文件在拉取请求中已更改为“v3”,则不允许合并。

azure-devops azure-pipelines azure-pipelines-release-pipeline

3
推荐指数
1
解决办法
1461
查看次数

ForEach lambda表达式是否具有可选的返回类型

有没有办法让ForEachlambda表达式具有可选的返回类型.这是一个需要实现的伪代码示例:

string val = MyList.ForEach(listItem => { if(listItem == "yes" ){ return "found" }  });

if(val == "found"){ dosomething }
Run Code Online (Sandbox Code Playgroud)

.net c# lambda

1
推荐指数
1
解决办法
63
查看次数

扩展方法不更新自身

给定以下对象及其扩展:

public class MyObj
{
    string var1 = "100";
    string var2 = "200";
}

public static void DoSomething(this MyObj myobj)
{
    myobj = new MyObj()
    myobj.var1 = "100000";
    myobj.var2 = "200000";
}
Run Code Online (Sandbox Code Playgroud)

请注意,扩展方法实例化一个新实例并将其分配给自己.但是当我这样做时,我的对象实际上没有按预期更新.它仍然包含旧的变量值,并保持不变.

MyObj myobj = new MyObj();
myobj.DoSomething();

//myobj.var1 is still 100, but expected it to be 100000;
//myobj.var1 is still 200, but expected it to be 200000;
Run Code Online (Sandbox Code Playgroud)

如何让我的对象按预期更新 - 这可以完成吗?

c# extension-methods

1
推荐指数
1
解决办法
552
查看次数

寻找匹配所有运算符的正则表达式:+ - */=> <> = <=&| %!^()

有没有办法使用正则表达式来查看给定的字符串是否是上述运算符中的任何一个,而没有别的.例

var a = "3 + 2" //match fail
var b = ">=" //match pass
Run Code Online (Sandbox Code Playgroud)

regEx测试必须确认我的给定字符串是否只是上述运算符之一.它可能不是运营商和其他东西的组合.

是否只有运营商的标准regEx表达式?

javascript regex

-4
推荐指数
1
解决办法
4045
查看次数