ASP.NET中的传输层安全性/不安全通信问题c# [英] Transport Layer Security / Insecure Communications problems in ASP.NET c#

查看:68
本文介绍了ASP.NET中的传输层安全性/不安全通信问题c#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

传输图层安全的任何示例代码,以便用户ID,密码,上传文件等旅行数据可以在网络应用程序中安全。



请提供任何帮助与...相关... 跨站请求伪造。

也。



谢谢......

: - )

解决方案

反CSRF和AJAX



表单标记可能是AJAX请求的问题,因为AJAX请求可能发送JSON数据,而不是HTML表单数据。一种解决方案是在自定义HTTP标头中发送令牌。以下代码使用Razor语法生成标记,然后将标记添加到AJAX请求中。通过调用AntiForgery.GetTokens在服务器上生成令牌。



 < script  >  
@functions {
public string TokenHeaderValue()
{
string cookieToken,formToken;
AntiForgery.GetTokens( null out cookieToken, out formToken);
return cookieToken + + formToken;
}
}


.ajax( api / values,{
type: post
contentType: application / json
data:{}, // JSON数据在这里
dataType: json
header:{
' RequestVerificationToken'' @ TokenHeaderValue()'
}
});
< / script >



处理请求时,从请求标头中提取令牌。然后调用AntiForgery.Validate方法来验证令牌。如果令牌无效,则Validate方法会抛出异常。



  void  ValidateRequestHeader(HttpRequestMessage request)
{
string cookieToken = ;
string formToken = ;

IEnumerable< string> tokenHeaders;
if (request.Headers.TryGetValues( RequestVerificationToken out tokenHeaders))
{
string [] tokens = tokenHeaders.First()。Split(' :');
if (tokens.Length == 2
{
cookieToken = tokens [ 0 ]。Trim();
formToken = tokens [ 1 ]。Trim();
}
}
AntiForgery.Validate(cookieToken,formToken);
}





进一步阅读: CSRF


Any example code for transport Layer Security so that the traveling data like user id, password, uploaded files can be secure in web application.

Please provide any help related to..

Cross Site Request Forgery.

also.

Thanks...
:-)

解决方案

Anti-CSRF and AJAX

The form token can be a problem for AJAX requests, because an AJAX request might send JSON data, not HTML form data. One solution is to send the tokens in a custom HTTP header. The following code uses Razor syntax to generate the tokens, and then adds the tokens to an AJAX request. The tokens are generated at the server by calling AntiForgery.GetTokens.

<script>
    @functions{
        public string TokenHeaderValue()
        {
            string cookieToken, formToken;
            AntiForgery.GetTokens(null, out cookieToken, out formToken);
            return cookieToken + ":" + formToken;                
        }
    }


.ajax("api/values", { type: "post", contentType: "application/json", data: { }, // JSON data goes here dataType: "json", headers: { 'RequestVerificationToken': '@TokenHeaderValue()' } }); </script>


When you process the request, extract the tokens from the request header. Then call the AntiForgery.Validate method to validate the tokens. The Validate method throws an exception if the tokens are not valid.

void ValidateRequestHeader(HttpRequestMessage request)
{
    string cookieToken = "";
    string formToken = "";

    IEnumerable<string> tokenHeaders;
    if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
    {
        string[] tokens = tokenHeaders.First().Split(':');
        if (tokens.Length == 2)
        {
            cookieToken = tokens[0].Trim();
            formToken = tokens[1].Trim();
        }
    }
    AntiForgery.Validate(cookieToken, formToken);
}



Further reading: CSRF


这篇关于ASP.NET中的传输层安全性/不安全通信问题c#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆