차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
마지막 판양쪽 다음 판
guide:android_개발_보안_가이드 [2013/11/22 06:00] 121.140.124.172guide:android_개발_보안_가이드 [2013/11/22 06:04] 121.140.124.172
줄 212: 줄 212:
 6: InputStream in = socket.getInputStream(); 6: InputStream in = socket.getInputStream();
 7: OutputStream out = socket.getOutputStream(); 7: OutputStream out = socket.getOutputStream();
-8: 주석문구 : Read from in and write to out...+8: // Read from in and write to out...
 9: in.close(); 9: in.close();
 10: out.close(); 10: out.close();
줄 228: 줄 228:
 7: InputStream in = socket.getInputStream(); 7: InputStream in = socket.getInputStream();
 8: OutputStream out = socket.getOutputStream(); 8: OutputStream out = socket.getOutputStream();
-9: 주석문구 : Read from in and write to out...+9: // Read from in and write to out...
 10: in.close(); 10: in.close();
 11: out.close(); 11: out.close();
줄 547: 줄 547:
 1: …… 1: ……
 2: public int factorial(int n) { 2: public int factorial(int n) {
-3: 주석문구 재귀 호출이 조건문/반복문 블럭 외부에서 일어나면 대부분 무한 재귀를 유발한다.+3: // 재귀 호출이 조건문/반복문 블럭 외부에서 일어나면 대부분 무한 재귀를 유발한다.
 4: return n * factorial(n - 1); 4: return n * factorial(n - 1);
 5: } 5: }
줄 620: 줄 620:
 9: conn = datasource.getConnection(); 9: conn = datasource.getConnection();
 10: } catch (SQLException e) { 10: } catch (SQLException e) {
-11: 주석문구 : catch 블록이 비어있음+11: // catch 블록이 비어있음
 12: } catch (NamingException e) { 12: } catch (NamingException e) {
-13: 주석문구 : catch 블록이 비어있음+13: // catch 블록이 비어있음
 14: } 14: }
 15: return conn; 15: return conn;
줄 640: 줄 640:
 9: conn = datasource.getConnection(); 9: conn = datasource.getConnection();
 10: } catch (SQLException e) { 10: } catch (SQLException e) {
-11: 주석문구 : Exception catch이후 Exception에 대한 적절한 처리를 해야 한다.+11: // Exception catch이후 Exception에 대한 적절한 처리를 해야 한다.
 12: if ( conn != null ) { 12: if ( conn != null ) {
 13: try { 13: try {
줄 649: 줄 649:
 18: } 18: }
 19: } catch (NamingException e) { 19: } catch (NamingException e) {
-20: 주석문구 : Exception catch이후 Exception에 대한 적절한 처리를 해야 한다.+20: // Exception catch이후 Exception에 대한 적절한 처리를 해야 한다.
 21: if ( conn != null ) { 21: if ( conn != null ) {
 22: try { 22: try {
줄 679: 줄 679:
 2: public void f(boolean b) { 2: public void f(boolean b) {
 3: String cmd = System.getProperty("cmd"); 3: String cmd = System.getProperty("cmd");
-4: 주석문구 :  cmd가 null인지 체크하지 않았다.+4: //  cmd가 null인지 체크하지 않았다.
 5: cmd = cmd.trim(); 5: cmd = cmd.trim();
 6: System.out.println(cmd); 6: System.out.println(cmd);
줄 690: 줄 690:
 2: public void f(boolean b) { 2: public void f(boolean b) {
 3: String cmd = System.getProperty("cmd"); 3: String cmd = System.getProperty("cmd");
-4: 주석문구 : cmd가 null인지 체크하여야 한다.+4: // cmd가 null인지 체크하여야 한다.
 5: if (cmd != null) { md = cmd.trim(); 5: if (cmd != null) { md = cmd.trim();
 6: System.out.println(cmd); 6: System.out.println(cmd);
줄 710: 줄 710:
 === 다. 예제 === === 다. 예제 ===
 <code Java |안전하지 않은 코드 예제 - Java> <code Java |안전하지 않은 코드 예제 - Java>
-1: 주석문구 : private 인 배열을 public인 메소드가 return한다+1: // private 인 배열을 public인 메소드가 return한다
 2: private String[] colors; 2: private String[] colors;
 3: public String[] getColors() { return colors; } 3: public String[] getColors() { return colors; }
줄 718: 줄 718:
 <code Java|안전한 코드 예제 - Java> <code Java|안전한 코드 예제 - Java>
 1: private String[] colors; 1: private String[] colors;
-2: 주석문구 : 메소드를 private으로 하거나, 복제본 반환, 수정하는 public 메소드를 별도로 만든다.+2: // 메소드를 private으로 하거나, 복제본 반환, 수정하는 public 메소드를 별도로 만든다.
 3: public void onCreate(Bundle savedInstanceState) { 3: public void onCreate(Bundle savedInstanceState) {
 4: super.onCreate(savedInstanceState); 4: super.onCreate(savedInstanceState);
줄 746: 줄 746:
 <code Java |안전하지 않은 코드 예제 - Java> <code Java |안전하지 않은 코드 예제 - Java>
 1: …… 1: ……
-2: 주석문구 : userRoles 필드는 private이지만, public인 setUserRoles()를 통해 외부의 배열이 할당되면, 사실상 public 필드가 된다.+2: // userRoles 필드는 private이지만, public인 setUserRoles()를 통해 외부의 배열이 할당되면, 사실상 public 필드가 된다.
 3: private String[] userRoles; 3: private String[] userRoles;
 4: 4:
줄 758: 줄 758:
 <code Java|안전한 코드 예제 - Java> <code Java|안전한 코드 예제 - Java>
 1: …… 1: ……
-2: 주석문구 : 객체가 클래스의 private member를 수정하지 않도록 한다.+2: // 객체가 클래스의 private member를 수정하지 않도록 한다.
 3: private String[] userRoles; 3: private String[] userRoles;
 4: 4:
줄 784: 줄 784:
 3: try { g(); } 3: try { g(); }
 4: catch (IOException e) { 4: catch (IOException e) {
-5: 주석문구 : 예외 발생시 printf(e.getMessage())를 통해 오류 메시지 정보가 유출된다.+5: // 예외 발생시 printf(e.getMessage())를 통해 오류 메시지 정보가 유출된다.
 6: System.err.printf(e.getMessage()); 6: System.err.printf(e.getMessage());
 7: } 7: }
줄 798: 줄 798:
 3: try { g(); } 3: try { g(); }
 4: catch (IOException e) { 4: catch (IOException e) {
-5: 주석문구 : end user가 볼 수 있는 오류 메시지 정보를 생성하지 않아야 한다.+5: // end user가 볼 수 있는 오류 메시지 정보를 생성하지 않아야 한다.
 6: System.err.println(" IOException Occured" ); 6: System.err.println(" IOException Occured" );
 7: } 7: }
줄 808: 줄 808:
 === 라. 참고 문헌 === === 라. 참고 문헌 ===
 가급적이면 공격의 빌미가 될 수 있는 오류와 관련된 상세한 정보는 최종 사용자에게 노출하지 않는다. 가급적이면 공격의 빌미가 될 수 있는 오류와 관련된 상세한 정보는 최종 사용자에게 노출하지 않는다.
-