2

SQL Azure를 사용하여 EF 4.1과 함께 Asp.NET MVC 3을 사용하고 있습니다. 나는 linq 식과 저장 프로 시저를 둘 다 가지고있다.모든 특수 문자 허용 및 SQL 삽입/XSS 방지

지금은 "';&<>/ 등의 모든 특수 문자를 입력하고 데이터베이스에 저장해야합니다. 그러나 렌더링 될 때 HTML로 렌더링해서는 안됩니다 (즉, 텍스트로 렌더링되어야 함). SQL injection 및 XSS 공격을 방지하려면 어떻게합니까?

@Html.TextBoxFor 또는 @Html.EditorFor 또는 레이블에 표시 할 때 우려되는 점은 무엇입니까? 입력 한 문자 유형에 대해 타협하고 싶지 않습니다. 이 방법에 대해 제안 하시겠습니까?

+1

이러한 것들을 시도 할 수있는 개발 스테이션/데이터베이스가 있습니까? Afaik, EF를 사용하고 있기 때문에 EF *를 사용하지 않는 곳 (또는 SQL 매개 변수 등을 사용하지 않는 곳)을 제외하고는 SQL 삽입에 대해 걱정할 필요가 없습니다. 예를 들어, 스토어드 프로 시저 중 하나라도 SQL을 생성하고 실행합니까? 그들을 확인하십시오. 비슷하게, * 편집자와 레이블의 내용은 일반적으로 html로 인코딩되어 있습니다. 즉, 페이지가 html로 해석 될 때 * 텍스트로 렌더링됩니다. 나는 그들이 htmlencode다는 것을 확인하는 것이 좋을 것이라고 생각한다. – JayC

답변

-1

SQL 주입을 방지하려면 항상 준비된 문을 사용해야합니다. 이렇게하면 작은 따옴표 (')와 같은 메타 문자를 삽입 할 수 있습니다. 가장 좋은 방법은 예상치 못한 것을 거부하는 것이지만 대부분의 키보드 문자를 포함하도록 정의한 것처럼 들립니다. 그래도 상위 비트 ASCII 및 제어 코드는 거부 할 수 있습니다.

XSS의 경우 사용자가 사용하는 소스가 HTML 사용 위치에 관계없이 HTML로 엔티티 인코딩해야합니다. 사용자에게 전송되기 바로 전에 인코딩을 수행하면 (출력 유효성 검사) 사용자가 이중 인코딩을 보지 않아도됩니다.

+0

HTML 엔티티 인코딩은 ** XSS를 방지하기에 충분하지 않습니다. [이 답변보기] (http://stackoverflow.com/a/70222/2489497) –