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>
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524