2008-10-30 4 views
4

HTML 또는 자바 스크립트 코드를 뱉어내는 저장 프로 시저를 만드는 것이 합법적이라고 생각하는 개발자가 있습니다. 내 생각에 이것은 우려의 분리 모델의 궁극적 인 남용입니다. 이 사람들이 종종 사람들이하는 것처럼 보인 것과 같은 일을하고 있습니까?저장 프로 시저에 HTML 코드 임베드

답변

2

끔찍한 틀림! 그래도 내 의견.

0

이것은 초보자가하는 전형적인 오류입니다.

SP 출력에 마크 업을 넣어야하는 경우 최소한 자신의 표준화 된 인코딩을 사용하고 응용 프로그램에서 HTML/자바 스크립트로 처리하도록해야합니다. 예를 들어

"<javascriptpopup>[outputuotputoutput]</javascriptpopup>" 

또는

"<prettyfont>[outputuotputoutput]</prettyfont>" 
4

Yucko. 몇 가지 문제가 있습니다

  • 수 없습니다 '피부'응용 프로그램 - 플렉스, 데스크탑 형태와 같은 완전히 새로운 프레젠테이션 이동 등
  • 당신은 환경에서 작업에서 그래픽 디자이너 또는 UI 전문가를 방지 그것은 그들에게 생산적이다.
  • HTML 저장소 (일부는 템플릿, 일부는 데이터베이스, 일부는 앱 코드)를 섞어 놓은 경우 UI 문제를 추적하는 것이 중요합니다.
  • IDE DOM/레이아웃 유효성 검사 없음
  • db를 실행하지 않고 미리 보거나 프로토 타입을 만들 수 없습니다.
0

"낮은 커플 링, 높은 응집력"원칙에 대한 자명 한 위반.

그런 짐승에게 CSS 서식을 적용하는 것이 어떨지는 상상할 수 없습니다.

3

이 우연히 이루어집니다 아마 다른 한편으로

레이어링의 원칙 우려의 분리의 위반 인 경우, sprocs가이 expressely 경우에 따라 매우 합법적하고 효율적으로 할 수 있습니다 데이터베이스 정보에서 HTML을 생성하기 위해 작성, 특히 웹 사이트 구조의 일부가 데이터베이스에서 인코딩되거나 데이터베이스 자체가 HTML 조각을 포함하는 매우 동적 인 소프트 코드 된 웹 사이트의 경우 ...

0

예, 불행히도 많은 사람들이 그것을 보았습니다. 당신 말이 맞아요 : 그것은 비열합니다.

일반적으로 레이어 분리 문제는 인접한 두 레이어가 섞여있는 경우입니다. 데이터베이스 레이어에서 비즈니스 로직을 가져 오거나 비즈니스 레이어에서 프리젠 테이션 로직을 가져옵니다. 하지만 이것은 레이어를 완전히 건너 뛰고 사용자 측 프리젠 테이션 마일을 속한 곳에서 가져옵니다! 유지할 수없는 공포로 묶여 있습니다.

악의없는 사람들이 이러한 청원에 대한 확신을 얻지 못하면 보안 문제로 악의적 인 소리를들을 수 있습니다. 저장 프로 시저의 데이터베이스 계층 기능은 HTML 또는 JS 문자열 리터럴로 출력하기 위해 텍스트를 이스케이프하는 방법을 알지 못하기 때문에 XSS 공격으로 이어질 가능성이있는 스크립트 삽입 해킹이 발생할 수 있습니다. 예를 들어, 사용자가 "Brian von < 스크립트> steal (document.cookie) </script>"라고 호출하면 저장 프로 시저 HTML 결과로 연결됩니다.

1

유효하지 않음. 보안, 낮은 결합 및 레이어링과 같은 모든 우려 사항을 제외하고 회사에서 콘텐츠를 신디케이트하고 모바일 장치 (wap 등)에 제공하고 텍스트 기반 전자 메일이나 인쇄물 등에 사용하려는 경우 어떻게됩니까?

1

나는 문제가 sprocs가이 권리를 할 수있는 도구가 부족한만큼 우려의 분리라고 생각하지 않는다.

또한이 코드를 읽는 다른 누구도 문제를 파악하지 못할 것이며 소스 제어, 통합 및 단위 테스트가 매우 어려울 것입니다.

예를 들어 CMS의 일부로 데이터베이스가 실제로 다른 위치에서 편집 된 Javascript 또는 HTML을 저장하는 경우 만 예외입니다.

1

전체 응용 프로그램에서 모든 HTML을 내보내고 감사하게도 외부 CSS/JS에 대한 참조를 사용하여 상점에서 일하면서 생존했습니다.

프로젝트가 시작될 당시 Oracle에서는 별도의 웹/애플리케이션 서버에 대한 지원이 없었습니다. 모든 것이 PL/SQL을 거쳤습니다.

가끔은 그냥 어차피를 사용해야합니다.

그렇다고해서 현대 DB 또는 응용 프로그램 아키텍처에서 저장 프로 시저 (Stored Procedure)의 뷰 수준 아티팩트를 생성 할 수있는 변명의 여지가 없다고 저는 생각합니다.

관련 문제