'Agile'에 해당되는 글 3건

  1. 2009.01.21 Kent Beck: Trends in Agile Development
  2. 2008.07.22 Spring Framework Security Advisory (3)
  3. 2008.07.21 Agile Java with Maven (3)
2009.01.21 11:39

Kent Beck: Trends in Agile Development

http://www.infoq.com/presentations/Agile-Trends-Kent-Beck


XP의 대가이신 켄트벡 아저씨의 Agile에 관한 프리젠테이션 내용이다.
신고
Trackback 0 Comment 0
2008.07.22 09:47

Spring Framework Security Advisory

Java 로 Web 개발을 한다면, Spring Framework을 사용할 것이다. Agile 방법론에 의해서 엄청난 개발 향상을 가져온다.
Java 기반 Web 개발에 있어서 없어서는 안될 그런 존재가 되어버린 엄청난 Framework이다.
그런데 밝은 면이 있으면 항상 어두운 면이 있기 마련이다.
이런 Spring Framework에서 아주 심각한 보안 결점이 발견 되었다고 한다.

  • MVC에서 Model View 부분에서 바인딩 하는 로직에서 발생하는 것
  • MVC View를 렌더할 때 해당 이름으로 View를 찾는데 이 이름을 사용자가 제어하는 경우
라는 내용이다

현재 Spring에서도 인식을 하고 이떨헤 해야 할 지를 가이드 하고 있다.
하지만 현재로서는 방법이 없다고 한다. 이 내용을 2004년에 이미 알고 Spring 측에 통보 했지만 그땐 별 심각하게 받아 드리지 않고 그냥 지나쳤다고 한다.
이 문제를 찾아낸 Lab에서 말하는 대처 방법이다. 원문을 그대로..

  • Never directly use data that a user can control, through hidden fields, cookies, or direct form submissions to control the actual views that are rendered in the MVC pattern.
  • Always use the setAllowedFields method to limit the auto-binding of all fields to only those fields that are required for the form.
  • Remember that validation is not just about protecting against SQL injection and cross-site scripting (XSS), but you need to validate all data that can be used to control a business process.

관련된 링크는 다음과 같다.


Spring Framework에서 제안하는 예방법이다.

To prevent the Data Submission to Non-Editable Fields issue from occurring, the DataBinder should be configured explicitly with the set of fields that are allowed for binding. To do this, set the "allowedFields" property on each DataBinder instance you work with in your application. Below is an example of how to do this with each major Controller implementation:
  • SimpleFormController - Override initBinder(HttpServletRequest, ServletRequestDataBinder) and call setAllowedFields(String[]) on the provided ServletRequestDataBinder instance.
  • MultiActionController - Call setAllowedFields on any ServltRequestDataBinder instance you instantiate locally within a handler method body.
  • @Controller - Use the @InitBinder annotation to inject a WebDataBinder into a method used to configure it explicitly. Call setAllowedFields(String []) to restrict the fields allowed for that Controller class. If the set of allowedFields needs to vary per handler method, have your @InitBinder method accept a HttpServletRequest and key off the current request mapping.
  • AbstractWizardFormController - Override initBinder(HttpServletRequest, ServletRequestDataBinder) and call setAllowedFields(String[]) on the provided DataBinder instance. Call getCurrentPage(HttpServletRequest) to configure the set of allowed fields per page.

To prevent the ModelView Injection issue from occurring, simply never allow the client to select the view name. View name selection is a server-side responsibility.
신고
Trackback 0 Comment 3
2008.07.21 10:12

Agile Java with Maven

개발에 있어서의 화두.. 뭐 오래전부터 대두되었던 부분이지만, Agile 개발은 현재 개발에 있어서 적용으로 가지는 효과가 가히 엄청나다고 할 수 있다.
Agile의 선두주자 Ruby가 있지만, Java로도 Agile 방법론을 도입해서 Ruby 못지 않은 성과를 거둘 수 있다.

Java로 개발하는데 있어서 걸림돌 중 하나가, 그 많은 library dependency를 어떻게 관리 하는가 였다. 그리고 초기 프로젝트 설정. 엄청난 노가다의 ant 설정등...
이런 문제를 한꺼번에 날려버린 그런 대단한 넘이 있다.
바로 Maven 이다.
얼마전부터 이넘으 써 보고 있는데, 가려운곳을 잘 긁어 주고 있다.
하지만 opensource의 단점중 하나인 부족한 documentation....
이 또한 The Serverside dot comSonatype dot com 에서 좋은 문서로 제공하고 있다.
우선 Sonatype의 Maven: The Definitive Guide는 필독서 이다. Maven을 이해하고 사용하는데 있어서 무조건 습득해야 할 주옥 같은 내용을 담고 있다.
두번째 The Serverside dot com의 m2eclipse라고 하는 Eclipse 플러긴의 설명이다.
Maven은 터미널에서 운영하는 CLI 애플리케이션이다. 이런한 CLI 애플리케이션을 Eclipse 기만의 플러긴으로 만들어 놓은것이 m2eclipse이다. 이전에 지난달 6월 13일 Eclipse와 Maven 플러그인 사용하기 란 제목으로 올린 글에서 잠깐 언급을 했었다.
Maven의 Eclipse 플러긴이 다른 종류도 있다고 했었는데, 아직은 이넘이 더 좋은것 같다. Eclipse 재단에서 받아 드렸다고 하니깐 더욱더 발전이 될 듯 하다.

이러한 툴 들은 개발에 있어서 크나큰 도움을 준다. 손으로 직접 작성한다는게 장점도 있지만, Agile을 지향하는 요즘에는 좀 지양되어야 할 부분인것도 사실이다.
자 이제 Maven의 세계에 빠져야 겠다.
그런데 이걸 어떤 프로젝트에 적용하지.....
신고
Trackback 0 Comment 3


티스토리 툴바