2014-08-27 4 views
1

XSS를 방지하기 위해 문자열 속성에 대해 살생을 수행하려면 어떻게해야합니까? 지금 당장 생각해 보면 내 기본 모델의 save 메서드를 재정 의하여 모델의 모든 문자열을 반복하고 모든 문자열 입력을 안전한 문자열로 설정해야합니다. 이것이이 문제에 접근하는 좋은 방법일까요, 아니면 더 좋은 방법일까요?Ember Data Model 속성 XSS를 방지하기 위해 위생/이스케이프 처리가 필요합니까?

편집 : 응용 프로그램에있는 사람의 이름 속성 (경고 ('XSS')를) 저장시

문제가 발생합니다. 그것을 데이터베이스에 비 위생적으로 저장합니다. 그런 다음 해당 이름이 다른 사이트에로드되어 출력 결과를 위생적으로 처리하지 못하고 스크립트 주입이 발생합니다. 나는 그것을 DB에 저장하기 전에 위생 처리하고 싶습니다.

+1

솔직히 말해서, 이것은 서버 쪽 관심사처럼 들립니다. 데이터베이스에 아무 문제가 없어도 데이터베이스의 잘못된 데이터를 방지함으로써 문제를 한 번 해결할 수 있습니다. 나중에 다른 UI를 사용하는 경우 해당 UI를 위생 처리하지 않아도됩니다. –

+1

^동의합니다. 이것은 가장 합리적입니다. 악의적 인 사람이 위생을 우회하는 악의적 인 요청을 게시 할 수 있기 때문입니다. – Jaime

답변

1

핸들 바는 자동으로 문자열을 살균합니다. 당신이 정말가가를 HTML-탈출 확인하기 위해 다른 사이트를 변경한다고, 오히려 입력을 소독하는 것보다

{{{myHtmlString}}} 
+0

문제는 엠버 응용 프로그램에서 스크립트 주입이 아닙니다. 내 질문을 편집하여 내가 무슨 뜻인지 알 수있게하십시오. – Jaime

+0

확인. 그것은 편집되었습니다. – Jaime

1

: 이러한 문제가 발생하지 않도록하려면, 당신은 명시 적으로 트리플 중괄호 구문을 사용해야합니다 데이터가 데이터베이스에서 표시됩니다. Ember 측에서 사물을 "위생"한다고해도 누군가가 데이터베이스에 HTML을 주입 할 수있는 다른 취약점이 없음을 보장 할 수 있습니까?

XSS를 다루는 유일한 방법은 실제로 제시되는 모든 것을 빠져 나가는 것입니다. 입력을 필터링하는 경우 예기치 않은 입력을 주입하는 모든 가능한 방법을 포착하지 못할 가능성이 큽니다.

+0

나는 당신에 동의합니다. 누군가가 다른 곳에서 텍스트를 이스케이프하는 것을 잊어 버리는 경우에도 입력을 피하는 것이 중요하다고 생각하지만 – Jaime

+0

입력을 필터링하는 경우에도 예상하지 못한 문자, 기대하지 않은 문자 세트 (신중하게 우회로 작성되었습니다. 필터 및 다른 문자 집합에서 다른 결과를 얻을). 당신은 통과시키고 자하는 무엇이든의 화이트리스트를 가져야 할 것입니다. 그리고 그것은 너무 제한적이게 될 것 같습니다. 출력을 피하는 것이 훨씬 쉽고 안전합니다. – Leeft

+0

내가 기대하지 않는 캐릭터의 예를 들어 주시겠습니까? 이스케이프 메서드를 사용하면 안전하지 않아야하는 핸들 바를 사용합니까? – Jaime

관련 문제