2016-10-07 3 views
0

지난 몇 주 동안 Meteor를 배웠던 중 일부 검증을 거친 단순한 crud를 만들기 위해 무언가를 발견했습니다.유성의 포장은 다음과 같이 정의되어 있습니다 : autoform insecure?

오늘까지 저는 컬렉션 스키마를 서버 측에 유지하려고 시도했으며 클라이언트에서 스키마 서버 유효성 검사를 렌더링하는 데 어려움을 겪었으므로 aldeed : autoform을 추가했습니다.

몇 가지 오류가 발생하여 autoform으로 재생을 시작했을 때 제대로 작동하려면 Collection의 스키마가 클라이언트 측에서 정의되어야한다는 사실에 놀랐습니다.

조금 위험 해 보이지 않습니까? 컬렉션의 스키마를 클라이언트에 게시해야합니까?

어쩌면 어리석은 질문 일 수 있습니다. 미리 사과 드리겠습니다. D

+0

난 그렇게 생각하지 않습니다.자동 폼을 사용하지 않았다면 해커에게 어떤 항목이 필요한지를 알려주는 폼 유효성 검사를 제공하는 코드가 있어야합니다. 나는 그 보안 구멍을 의미하지는 않는다고 생각한다. – Mikkel

+0

그러나 유효성 확인을 제공하는 코드는 잠재적으로 중요한 정보를 노출하는 클라이언트 측이 아니라 서버 측에서 "보안"될 것이다. – Gabriel

답변

0

클라이언트와 서버 코드 모두에서 액세스 할 수 있도록 스키마를 정의해야합니다. 이것은 폼 유효성 검사가 클라이언트 측에서 한 번 수행되고 (아래와 같이 브라우저 콘솔에서 사용할 수있을 때 항상 안전하지 않은 것으로 처리되어야 함) 한 번 서버 측에서 수행되기 때문입니다. 서버 측 유효성 검사는 항상 안전한 것으로 간주됩니다. 따라서 브라우저에서 양식을 조작하는 경우에도 유효성 검사가 스키마와 일치하지 않으면 스키마가 컬렉션에 첨부되어있는 한 서버 쪽 에서 필터링됩니다. 나는 그것이 안전하다는 것을 믿습니다.

enter image description here

Meteor autoform page 당신이 규칙을 허용/거부 불안 제거하고 추가 제안합니다.

당신이 insecure 패키지를 제거 을 한 경우 신뢰할 수없는 코드에 대한 적절한 삽입 보안을 정의해야합니다. 통화 허용/거부 또는 ongoworks:security을 사용하십시오.

단계 나는 (나는 또한 유성 우주 비교적 새로운 해요 이후, 더 나은 방법이있을 수 있음을 유의하시기 바랍니다) 보안

  1. 제거 autopublish 안전하지 않은 물건을 유지하십시오.
  2. 허용/거부 규칙을 사용하여 스키마를 정의하십시오.
  3. 유성 서버 메소드를 사용하여 삽입/업데이트하십시오.
  4. 컬렉션 또는 스키마에 첨부 된 스키마를 사용하여 양식의 유효성을 검사하고 실제로 컬렉션에 첨부하지 않으려는 경우 서버 코드에서 [check()][4]으로 전화를 걸어 양식이 제출되면 클라이언트가 서버로 끝나면, 서버는 데이터가 여전히 스키마와 일치하는지 여부를 명시 적으로 확인하고 신뢰할 수없는 사람이나 무언가에 의해 아무것도 삽입/변조되지 않았는지 여부를 명시 적으로 확인합니다. 조작 된 경우 서버 측 유효성 검사는으로 전달 된 데이터에 대한 추가 사항을 자동으로 걸러냅니다.

이 사람이 존재하지 않는로 추가 데이터를 추가하는 경우 발생하는 것입니다/스키마 정의에 부합 :

enter image description here

+0

길고 자세한 게시물을 보내 주셔서 감사합니다.하지만 여전히 클라이언트에 스키마를 공개하면 악용 될 수있는 정보를 제공 할 수 있다고 생각합니다. 이 질문은 오해의 소지가 있으므로 새로운 질문을 씁니다. – Gabriel