일반적으로, 모든 제정신 개발자 (살균 등 적절한 유형으로 캐스팅 검증)개인/보호 된 방법의 입력 보안?
내 질문은 모든 public 메소드의 입력을 확보하기 위해 노력하고있다 : 또한 보호/개인 메소드에 전달 된 매개 변수의 유효성 검사 코드에서 지내 ? 필자가 공용 메서드의 매개 변수를 적절하게 보안하고 외부 (다른 클래스, db, 사용자 입력 등 ...)에서 값을 반환하는 경우 필자의 의견으로는 필요하지 않습니다.
하지만 메소드 바디에서 메소드 호출과 검증 된 값의 반환을 위해 검증이 반복되는 프레임 워크와 애플 리케이션 (예 : prestashop)에 계속 직면하고 있습니다. 나쁜 디자인의 표시이기도합니다.
정규 표현식을 사용하지 않는 한 유효성 검사에서 많은 성능 오버 헤드가 발생하지 않습니다. – Andy
나는 아주 나쁜 검증을 보았다. 앞서 언급 한 prestashop에서는 테이블/열 이름의 유효성을 검사하기 위해 regexp를 사용하는 ORT에서 메소드 isTableOrIdentifier를 가지며 실제로 한 객체의 내부에서 수십 번 호출됩니다 (지금은 수백 또는 수천 개의 객체를 가져 오는 것으로 상상합니다) –
적절한 작업을 수행하는 경우 단위 테스트의 수준, 그리고 일부 개인 회원의 일부 유효성 검사를 건너 뛰는 것은 괜찮을 것입니다. 항상 위험이 있습니다. 또는 검토 자; 코드를 살펴보면 호출하는 공용 멤버가 수행 한 작업에 따라 다운 스트림 가정이 항상 정확하다는 것을 알 수 있습니다. – JoeGeeky