2011-07-29 3 views
2

XSS 보호를 어디에 두어야하는지 궁금합니다. Google 팀은 프런트 엔드 팀과 백 엔드 팀으로 나뉘며 서로 다른 플랫폼을 사용하기 때문에 두 그룹 간의 API로 REST를 사용합니다. 우리는 보호되어야하는 HTML의 하위 집합을 보유 할 수있는 필드를 가지고 있으며이 계층을 어떤 계층에서 수행해야하는지 궁금합니다.REST 웹 서비스 및 XSS 보호를 적용 할 위치

웹 서비스가 데이터베이스에 허용하지 않거나 출입시 유효성을 확인하여 안전을 보장해야합니까? HTML을 포함 할 수없는 필드의 경우, 우리는 그냥 원시 입력으로 저장하고 프론트 엔드를 프레젠테이션 전에 이스케이프 처리합니다.

내 관점은 웹 서비스가 누군가가 허용되지 않는 태그를 사용하려고 시도하는 경우 데이터가 유효하지 않음을 응답해야한다는 것입니다 (유효하지 않은 업데이트를 나타 내기 위해 422를 사용했습니다). 다른 사람들이 생각하는 것만 궁금해합니다.

답변

1

아마도/또는 아닙니다. 웹 서비스는 잠재적으로 많은 UI에서 호출 할 수 있으며 시간이 지남에 따라 변경되므로 모든 호출자가 신중하고 신뢰할 수 있다고 가정해서는 안됩니다. 실제로 누군가가 직접 쿼리를 직접 작성하여 서비스를 호출 할 수 있습니까?

그러나 유용성을 위해 UI에서 친숙한 검증 및 오류보고를 선택하는 경우가 있습니다. 나는 필드에 비영 숫자가 포함되어 있으면 웹 사이트에서 서비스 양식의 barfs로 온라인 양식을 채운 상태입니다. 이렇게 UI가 입력의 3 페이지 후에 나의 요구를 거절하기보다는 입장의 입장을 유효하게 한 경우에 매우 좋았을 것입니다.

0

을 당신은 모두를 사용해야합니다 (웹 사이트가 고용주의 이름을 요청하고, 이름은 실제로 당신이 조금 좌절 것 아포스트로피를 포함하고 있습니다! 경우 말할 것도하지 않음). 전형적인 패턴은 길에 무서운 데이터를 위생적으로 만들려고 시도하는 것입니다. 그리고 주어진 값에 대해 위생 처리가 필요하다면 요청을 거부해야합니다.

전자의 이유는 인코딩이 때때로 누락되는 것입니다. 후자에 대한 이유는 데이터베이스가 데이터 원본으로 신뢰 될 수 없기 때문입니다 (사람들은 클라이언트를 방문하지 않거나 클라이언트가 뭔가를 놓친 것일 수 있습니다).

관련 문제