3+3 ASP.NET 실수(+ 이를 피하는 방법)
11016 단어 dotnetcsharpprogrammingbeginners
개발자로서 애플리케이션을 보호하는 것이 얼마나 중요한지 알고 있습니다. 앱이 해킹되면 귀하와 귀하의 고객에게 큰 문제가 될 수 있습니다. 인터넷 보안 위반 및 사이버 공격이 증가함에 따라 앱 보호가 그 어느 때보다 중요해졌습니다.
잠재적인 위협을 방지하기 위해 몇 가지 실수와 ASP.NET 응용 프로그램을 더 잘 보호하는 데 도움이 되는 실수를 피하는 방법을 공유하겠습니다.
3+3은 일반적인 간단한 것 3개와 보안적인 것 3개를 설명할 것입니다. 가장 일반적인 것부터 시작하겠습니다.
ASP.NET에서 흔히 저지르는 3가지 실수 📚
LINQ 쿼리의 ToLower()가 작동하지 않음
ToLower
함수는 문자열의 소문자 복제본을 반환합니다. 그러나 여러 소스의 숫자를 비교하려고 하면 당황스러운 오류가 발생할 수 있습니다. 다음 예를 고려하십시오.list = (from ds in dbContext.dotnetsaferServices
join c in dbContext.customer on ds.customerName equals c.customerName)
where (ds.shield.number.ToLower().Contains(productLicense.ShieldNumber.ToLower()))
한 가지 접근 방식은
IndexOf
대신 쿼리 내에서 대소문자를 구분하지 않는OrdinalIgnireCase
속성만 사용하는 것입니다.ToLower
.list = (from ds in dbContext.dotnetsaferServices
join c in dbContext.customer on ds.customerName equals c.customerName)
Where (ds.shield.number.IndexOf(productLicense.ShieldNumber, StringComparison.OrdinalIgnoreCase) != -1))
종속성 주입을 사용하지 않음
컨트롤러가 아래와 같이 사용자에게 전달할 수 있는 Foo를 얻기 위해 FooService가 필요하다고 가정합니다.
public class FooController
{
public IActionResult Index()
{
var fooService = new FooService(new BarService(), new BazService());
return View(fooService.GetFoo());
}
}
문제는 컨트롤러가 FooService를 설정하는 방법에 대한 세부 사항을 요구한다는 것입니다. 이는 FooService가 필요할 때마다 이러한 추론을 반복해야 함을 의미합니다.
종속성 주입은 ASP.NET 5 MVC 6의 기본 제공 기능입니다. 따라서 생성자에서 종속성을 나타낼 수 있습니다. 그러면 ASP.NET 5 프레임워크가 우리를 대신하여 제출합니다.
Var 키워드의 잘못된 사용
var
키워드의 오용 및 남용은 일반적이고 근본적인 문제입니다. var의 진정한 기능은 지역 변수가 어떤 유형인지 모를 때 지역 변수를 선언할 수 있도록 하는 것입니다. 컴파일 시간까지 유형 이름이 무엇인지 모르기 때문에 익명 유형의 경우에 자주 발생합니다.그럼에도 불구하고 일부 프로그래머는 변수를 정의할 때마다
var
를 사용합니다. 지역 변수 선언의 유형 이름은 또 다른 설명 계층을 추가합니다.// let's say you have a static method called GetProducts()
// that returns System.Data.DataTable
var products = GetProducts(ModelTypes.Subscription);
// how is it clear to the reader that I can do this?
return products.Compute("MAX(Price)", String.Empty);
ASP.NET에서 저지르는 3가지 보안 실수 💻
Web.config에 비밀 저장
이는 암호화 키를
web.config
파일에 저장하여 시간을 절약하려는 욕구에서 비롯됩니다. 예를 들면 다음과 같습니다.<appSettings>
<add key="AWS" value="someSecret" />
<add key="Database" value="someKey" />
</appSettings>
web.config file
에 비밀을 유지해서는 안 됩니다. 따라서 아래와 같이 코드를 보호된 파일로 리디렉션해야 합니다.<appSettings file="Web.SECRETS.config">
<add key="Database" value="someSecret" />
</appSettings>
잠재적으로 위험한 결과가 포함된 요청.양식 값
기본적으로 ASP.NET MVC는 XSS(Cross Site Scripting) 공격을 방지하기 위해 이러한 종류의 코드가 서버로 전송되는 것을 방지하기 때문에 오류가 발생합니다. 다음은 HTML 코드를 서버로 전송하려고 할 때 발생하는 문제에 대한 수정 사항입니다.
아래에 설명된 대로 모델 클래스의 AllowHtml 특성을 사용하여 특정 필드에 대한 ASP.NET MVC 유효성 검사를 비활성화할 수 있습니다.
public class ProductModel
{
[Display(Name = "Description:")]
[AllowHtml]
public string Description { get; set; }
}
클라이언트에 XSRF 토큰을 사용하지 않음
교차 사이트 요청 위조는 XRSF 토큰을 통해 방지됩니다. 브라우저가 암시적으로 사용자를 인증할 수 있을 때마다 이를 활용해야 합니다. 여기에는 Windows 인증을 사용하거나 쿠키를 사용하는 자동 인증을 사용하는 프로그램이 포함됩니다.
예를 보자:
[Route("api/[controller]")]
public class SecurityController : Controller
{
private readonly IAntiforgery _antiforgery;
public SecurityController(IAntiforgery antiforgery)
{
_antiforgery = antiforgery;
}
[HttpGet]
public IActionResult Get()
{
var tokens = _antiforgery.GetAndStoreTokens(HttpContext);
return new ObjectResult(new {
token = tokens.RequestToken,
tokenName = tokens.HeaderName
});
}
}
ASP.NET은 오픈 소스이거나 상용일 수 있는 웹 개발 프레임워크입니다. ASP.NET은 웹 페이지, 웹 응용 프로그램 및 XML 웹 서비스를 만드는 데 사용됩니다.
보안은 SQL 삽입 및 XSS(교차 사이트 스크립팅)의 일반적인 취약성으로 인해 오늘날 많은 ASP.NET 응용 프로그램의 주요 문제입니다.
개발자가 오류 없는 소프트웨어 제품을 만드는 것은 어렵지만 위에서 언급한 이러한 일반적인 보안 오류는 ASP.NET 응용 프로그램을 개발할 때 쉽게 피할 수 있습니다.
Reference
이 문제에 관하여(3+3 ASP.NET 실수(+ 이를 피하는 방법)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bytehide/33-aspnet-mistakes-how-to-avoid-them-25cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)