programing

angularjs + 사이트 간 스크립팅방지

cafebook 2023. 10. 10. 20:57
반응형

angularjs + 사이트 간 스크립팅방지

Angularjs가 XSS 공격을 맡습니까?ng-bind가 관리한다고 읽었습니다.하지만 샘플을 테스트하려고 하면 ng-model로 html 태그를 입력 형식으로 삽입할 수 있습니다. html 태그를 빠져나가지 못했습니다.

저는 ng-model과 결합하는 입력 요소가 우리 페이지에 많이 있습니다. html 태그를 입력하면 html/scrip 태그를 각이 무시하는지 확인하려면 어떻게 해야 합니까?

전과가 있는

<input id="name" ng-model="name"></input>

라고 입력하면

'Hello, <b>World</b>!'

$scope.name 은 제가 입력한 내용과 동일하게 포함되어 있습니다. 태그를 제외하는 것을 didn합니다.

  var val = $scope.name;
  console.log(val); 

같은 판화

'Hello, <b>World</b>!'

angularjs로 해결하는 방법을 알려주세요.

감사합니다.

여기 보세요: http://docs.angularjs.org/api/ngSanitize/service/$sanitize

이스케이프 사용을 원하는 경우ng-bind, 다음과 같이 해석하지 않고 태그를 렌더링합니다.

Hello <b>World</b>헬로 월드 같지 않은!

당신은 이해하십니까? 송-바인드는 HTML 태그에 신경 쓰지 않기 때문에 안전합니다.

HTML 태그를 해석하고 싶지만 안전하게 ng-bind-html을 사용하세요!

예를 들어 이 문자열을 표시하려면:

'Hello <b>World</b><input type="text" />'

결과는 : Hello World이지만 Angular이기 때문에 입력이 없습니다.JS 컴파일러는 $sanitize 서비스를 사용하고 HTML 요소의 화이트리스트를 확인하며 iput이 승인되지 않았습니다.

아마도 ng-bind-html이 당신이 찾고 있는 것일 것입니다.

사용자가 HTML 태그를 입력에 넣을 수 없는지 확인하려면 입력에 지시 ng-패턴을 사용하십시오!

http://docs.angularjs.org/api/ng/directive/input

입력한 문자에 허용되는 정규 문자가 필요합니다!

도움이 되길 바랍니다!

저는 앵글이 안 믿질 않아요JS에는 기본 화이트리스트 입력 유효성 검사가 있으며, 이는 테스트 연습 항목입니다.따라서 사용자는 원하는 것을 거의 입력할 수 있습니다.이것은 놀라운 일이 아닙니다. 화이트리스트는 도메인별로 매우 다르며 Angular는 광범위한 도메인을 위해 설계된 프레임워크입니다.

XSS에 대한 주된 방어 방법은 신뢰할 수 없는 모든 데이터를 적절히 인코딩하는 것입니다(https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS)) 참조).이것은 기본적으로 Angular가 수행합니다.

결론은 그 각도입니다.JS는 기본적으로 XSS로부터 안전하도록 설계되었으며 특별한 조치가 필요하지 않습니다.normal을 사용하여 뷰에 입력한 내용을 출력함으로써 몇 가지 기본 시나리오를 확인할 수 있습니다.{{scopevariable}}

Angular에 대한 자세한 분석을 찾았습니다.JS XSS 취약성: https://code.google.com/p/mustache-security/wiki/AngularJS .댓글 끝에는 각 팀의 추가적인 논의와 답변이 담긴 구글 문서 링크가 있습니다.

언급URL : https://stackoverflow.com/questions/23007807/angularjs-cross-site-scripting-preventing

반응형