asp.net core安全事项(中)

  • 上传文件

上传文件是造成风险的很大因素,所以对上传文件进行处理是重要的,首先要处理的是:a、上传文件大小限制;b、上传文件类型(能过扩展或,或文件头)限制;c、上传的名称要替换掉;d、上传的文件要在专用区域(如果能设置权限最好)最好。

[HttpPost("/files")]
public async Task<IActionResult> Files(List<IFormFile> files)
{
      //要据上传文件的特征,一定要验证用户上传文件的可信度
      var size = files.Sum(f => f.Length);
      foreach (var formFile in files)
      {
           //扩展名
           var extension = Path.GetExtension(formFile.FileName);
           var filePath = $"{Directory.GetCurrentDirectory()}/uploadfiles/{DateTime.Now.ToString("yyyyMMddHHmmss")}{extension}";
           if (formFile.Length > 0)
           {
               var extesion = Path.GetExtension(formFile.FileName);
               var stream = new FileStream(path: filePath, mode: FileMode.Create);
               await formFile.CopyToAsync(stream);
            }
        }
        return Ok(new { count = files.Count, size });
}
  • sql注入

sql注入的处理很多ORM都 有对应的解决方案,但有些时候,代码检查工具会把一些非注入的场景检测成注入的情况,要尽量sql语句拼接,一定以参数据形式代入,这样不但能避免注入,还能让检测工具通过。

  • 防止跨站点请求伪造

    在asp.net core中的防跨站点伪就是在服务端生成一个字符串,提交到后台时验证这个串是否正确,正确就通过,说明是同一站点,否则为不信任站点提交。

    配置防跨站点伪造配置

        public void ConfigureServices(IServiceCollection services)
        { 


            #region 5、防止跨站点请请求伪造xsrf/csrf
            //防止跨站点请请求伪造xsrf/csrf
            //ajax提交时,需要自定义Head时使用
            services.AddAntiforgery(options =>
            {
                options.FormFieldName = "AntiforgeryGSW";
                options.HeaderName = "X-CSRF-TOKEN-gsw";
                options.SuppressXFrameOptionsHeader = false;
            });
            //省略n行人码
       }

在对应的controller上应用防跨站点伪造特性

    [AutoValidateAntiforgeryToken]//不会应用于get,head,options,trace
    public class HomeController : Controller
    {
    }

客户商在form表单 用应用

<form action="login" method="post">
   @Html.AntiForgeryToken()
<form>

在ajax中应用

<script>
        function add() {
            $.ajax({
                type: "POST",
                contentType: "application/json",
                headers: {
                    'X-CSRF-TOKEN-gsw': $("[name='AntiforgeryGSW']").val()
                },
                url: "/csrf",
                dataType: 'json',
                data: JSON.stringify({ "ID": 112, "Name": "李四" }),
                success: function (data) {
                    console.log(data);
                },
                error: function (err) {
                    console.log(err);
                },
                complete: function (XMLHttpRequest, status) { //请求完成后最终执行参数 
                }
            })
        }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值