728x90


728x90

1. 검색했을 때 에러이유

권한 or 주소 잘못 작성



2. 현재 java 1.7 환경 이클립스에서 git pull 에러 발생 

git-upload-pack  


해결 원인 : git 에서 지원하는 java 버전 1.8 , 내가 쓰는건 1.7

해결:  이클립스 ini 파일 설정에 -vm (자바 경로 수정)


참고 : 

https://community.atlassian.com/t5/Bitbucket-questions/JGit-quot-cannot-open-git-upload-pack-quot-error-message-on/qaq-p/604160



충돌시. 

-git stash

git pull origin master

git stash apply

https://backlog.com/git-tutorial/kr/stepup/stepup6_2.html



eclipse : cannot open git-upload-pack

window > preference > team > git > configuration

add entry의 key, value에 다음과 같이 넣자.

 - key : http.sslVerify

 - value : false



출처: http://webie.tistory.com/94 [webie's blog]


cannot open git-receive-pack

Context Menu에서 "Configure Push" 를 선택한다.


"Configure push for remote 'origin' 에서 "Change..." 버튼을 선택한다.


출처: http://roadrunner.tistory.com/605 [삶의 조각들]

728x90

http://openeg.co.kr/ 보안교육을 듣고. 

*  공격자의 패턴

  1. 관리자에게 악성 파일 배포: 관리적 보안이 필요한 경우 
  2. 웹서버 공격


가. 보안 사고 사례 

  1. 웹어플리케이션 취약점 이용 

    : 로그인 하여 다른 고객의 번호를 조회, 방화벽에서 막아주는 반복 실행 기간보다 넓게 반복 

     → 생성 & 업데이트 & 삭제 시 권한있는 사용자인지 조회 확인필요

  2. 로그인 관리, 암호화, 파일업로드 취약점 이용

    : 현대캐피탈 사고, COMMAND 창을 사용할 수있는 환경을 만들고 컴퓨터 내부의 데이터를 뒤짐

    DB의 경우 암호화 되어 사용할 수 없었으나 로그파일을 사용함.

    →  중요데이타의 경우 로깅 데이터도 암호화 할 것.

  3. OpenSSL heartBleed 취약점

    : 오픈 라이브러리 취약점. 변수와 변수의 길이를 파라메터로 요청을 보낼 때 사용함, 이때 변수의 길이를 보내는 길이 보다 길게 주면 heap 영역에 저장된 다른 사용자의 정보도 모두 가져옴

    →  JAVA의 경우 보안의 문제점이 발견되면 해당 API 듀플리케이트 됨 참고만

    → 메모리영역에 key 값이 남지 않도록 할 것.

  4. 스마트폰 앱의 허술한 보안공약

    : 포인트 선물하기 시 문자인증 프로세스 제거. 소액의 포인트를 한 사용자에게 선물하여 고액 결재로 사용
    → 프로세스 설계시 주의

  5.  SQL인젝션 취약점을 이용한 공격

  6. 파일 업로드 취약점을 이용한 공격

  7. 정수 오버플로우를 이용한 공격

  8. 중요데이터 암호화 부재

  9. 파라메터  변조를 이용한 공공아이핀 부정발급

  10. URL 파라미터 조작 개인정보 노출(2016 yes24)

  11. 무작위 대입공격 기프트 카드 정보유출(2016 카드사)

  12. 사물인터넷 보안 위협


나. 보안 약점 / 취약점 

#보안 약점

  •  소스코드에 존재하는 잠재적 위험

#보안 취약점

  • 보안 약점 중 침해 사고로 연결되는 위험.
  • 보안약점은 취약점을 포함한다. 




다. DB 활용 

    # 보안 약점

  • CWE(Common Weakness Enumeration) 

    -  https://cwe.mitre.org/

    -  미 국토 안보부 관리

     # 보안 취약점

  • CVE(Common Vulnerabilities Exposures)

    https://cve.mitre.org/
    - "CVE-2014-0001" 보안 솔루션 소개시 사용.

  • SANS (SysAdmin, Audit, Network and Security)

    - CWE/SANS 가장 위험한 소프트웨어 에러 25개

        소프트 웨어 오류 정리 목록...구성요소간 안전하지 않은 상호작용(6개), 위험한 자원관리(8개), 허점이 많은 방어(11개)

  • CERT Secure Coding Standard

    -  안전 코딩 패턴, 2009년 10월기준 17개 카테고리, 지속적 갱신중. 

  • OWASP (The Open Web Application Security Project)
    - OWASP Top 10: 웹 프로그래밍 관련 가장 위험한 10가지 취약점. 3년에 1회 꼴로 발표.. 최근(2017년 )은 4년 걸림.



라. 2015년 상위 웹 취약점 & 약점

 

2015년 상위 웹 취약점

 

2015년 상위 보안 약점

 

1. 크로스사이트 스크립트


2. 정보누출


3. 관리자 페이지 노출


4.불충분한 인가


5. 경로추적 및 파일 다운로드


6. 악성콘텐츠


7. 위치공개


8. 크로스사이트 리퀘스트 변조


9. 데이터 평문 전송


10. SQL 인젝션

 

1. 크로스사이트 스크립트


2. 부적절한 예외 처리


3. 오류메시지를 통한 정보노출


4. 오류상황 대응 부재


5. Null Pointer 역참조


6. SQL 삽입


7. Public 메소드로 반호나된 Private배열


8. 잘못된 세션에 의한 데이터 정보 노출


9. 부적절한 지원 예제


10. Private 배열에 Public 데이터 할당





 
  


'For Real > Others' 카테고리의 다른 글

크리덴셜  (0) 2018.06.12
[2018]it+ 업무 용어  (0) 2018.04.30
유용한 사이트 모음(개발)  (0) 2017.12.13
유용한 사이트 모음 (일반)  (0) 2017.12.13
[KMU-KISIA 정보보안 아카데미] 시큐어 코딩 관련 용어 정리  (0) 2017.12.12
728x90

유용한 사이트 1. 파비콘 생성기

https://www.favicon-generator.org/

아래 사진을 클릭하세요

유용한 사이트 2. 자바 정규식 검사

https://regexper.com/

아래 사진을 클릭하세요

유용한 사이트 3. JavaScript, HTML 자동정렬

http://jsbeautifier.org/

아래 사진을 클릭하세요


728x90

유용한 사이트 1. 내 비밀번호는 얼마나 안전한가요?

 How secure is my password?

비밀번호가 안전한지 점검해 보세요. 

아래 이미지를 클릭하세요

힌트!! 찾는데 63만년 보다는 오래걸려야 겠죠?(make over 638 THOUSAND YEARS !!!) 

암호화는 푸는데 시간이 오래걸리는 수학식입니다.^^

"ENTER PASSWORD"에 비밀번호를 입력해보세요!!

주소 : https://howsecureismypassword.net/


728x90

[a-zA-Z]            알파벳 1글자

[a-zA-Z][a-zA-Z] 알파벳 2글자

[a-zA-Z].           첫자만 알파벳 모든문자 한글자. 

[a-zA-Z].+         첫자만 알파벳 두글자 이상의 모든물자. 

[a-zA-Z].+[0-9]   첫자 알파벳 마지막글자 숫자 세자 이상. 




^

 문자열의 시작

 문자열의 종료

 .

 임의의 한 문자 (문자의 종류 가리지 않음)

 단, \ 는 넣을 수 없음

 *

 앞 문자가 없을 수도 무한정 많을 수도 있음

 앞 문자가 하나 이상

 앞 문자가 없거나 하나있음

 []

 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를      나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다.

 {}

 횟수 또는 범위를 나타낸다.

 ()

 소괄호 안의 문자를 하나의 문자로 인식 

 |

 패턴 안에서 or 연산을 수행할 때 사용

 \s

 공백 문자

 \S

 공백 문자가 아닌 나머지 문자

 \w

 알파벳이나 숫자

\W 

 알파벳이나 숫자를 제외한 문자

\d 

 숫자 [0-9]와 동일

\D 

 숫자를 제외한 모든 문자

 정규표현식 역슬래시(\)는 확장 문자

 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미

(?i) 

 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음

'For Real' 카테고리의 다른 글

[스파르타코딩클럽 할인쿠폰] 5만원 링크  (0) 2021.04.21
2018.06.30 싸이그램즈 2018  (0) 2018.06.30
728x90


KMU-KISIA 정보보안 아카데미 재직자교육 -웹해킹방어를 위한 자바시큐어코딩 실무 교육을 듣고..

 1. 보안 약점과 보안 취약점의 차이는?  << 클릭


CH2 . 개발 보안 방법론

#시큐어 코딩

- "소스코드"의 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거

- 방법 : 코드검사 혹은 보안 솔루션도입.

# 소프트웨어 개발 보안

- "소프트웨어 개발 과정"에서 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거 하는 일련의 보안 활동

- 요구사항 분석

C(기밀성 1~3점) x I (무결성 1~3점) x A(가용성 1~3)  =1~27점 으로 등급별 관리

- 설계 

로그인 : 중요정보

관리자 페이지 : 중요정보, 별도 포트, 외부망

급여 : 경우에 따라. 공무원의 경우 이미 공개정보이기에 중요하지 않음  

- 구현

- 테스트


시큐어코딩 설명 쉬운 사이트 : http://blog.naver.com/acornzone/220689199858


#위협모델링

4단계 위협에 대한 우선순위결정

1. 예상피해

2. 재연확률 : 공격이 성공할 확률?

3. 공격 용이도 : 공격을 위해 얼마나 많은 노력이 필요한가

4. 영향을 받는 사용자

5. 발견 용이성 : 얼마나 쉽게 취약성 발견되는가?


CH3 . 웹 어플리케이션 보안을 위한 기본지식


실습 환경 구축

http://openeg.co.kr/672

접속 및 다운로드

1. SecureCoding.zip

C:\ 폴더에 압축해제

2. WindowXP_client ZIp

3. VMWareWorkstation download 설치

mySQL 이미 설치된 컴퓨터는 3306 port kill(http://blog.naver.com/ooa1769/220557706943)


파로스를 이용한 예제 실행

사용자 컴퓨터 <---> 파로스 <--->웹서버


#HTTP 와 웹 구조 이해

- HTTP(HyperText Transfer Protocol)

서버 컴퓨터와 요청(request)/응답(response) 프로토콜

- HTML head ; body 설명

- HTML body ; 실제 데이터

응답(response)은 바디부분만 준다. 


인코딩

# 인코딩 스키마

- 웹어플리케이션은 인코딩 스키마로 데이터를 안전하게 사용

- URL 인코딩: url에 글자들이 안전하게 서버 컴퓨터에 전달되도록 인코딩

                  , AJAX의 경우 내부에서 자동실행 

ex) < (url 인코딩값 : %3C)

- HTML 인코딩: HTML 문서에서 특별한 기능을 수행하는 문자들을 안전하게 브라우저에 출력

           ex) < (HTML인코딩값 : &lt;)

- BASE64 인코딩: a-z,A-Z,0-9  알파뉴메릭 64개의 문자로 안전하게 인코딩

자세한설명 : http://cocomo.tistory.com/290


크로스 사이트 스크립트

- 유일하게 클라이언트 페이지 공격함 (대부분 서버 공격)

- 사회 공학적 기법 : 사용자가 요청을 보내야 공격이 성립됨, 클라이언트 에게 응답이 되지않으면.. 공격이 성립되지 않는다. 


기법 1 : Reflective XSS  반사

클라이언트 입력 : ID "####"     <=====> 서버 출력 :  "####" 님 환영합니다. 

악성코드 받을수 있는 유알엘을 삽입하여 메일로 보냄. 서버는 (악성코드 포함한)"####" 님 환영합니다. 를 출력


기법2 : Stored XSS

id=1에 DB에 저장. DB저장된 정보가 조회 되어 실행


기법3: DOM XSS 개요

클라이언트 입력 파라메터 1: "####"     <=====>  다른 시첨에서 주어진 값을 실행할 때 문제 발생


해결방안

기법1 ==> 입력값.출력값 필터링으로 해결 (ex, SpringMVC 이용하는 경우)

==> 입력시 Fillter 에 XSS 설치시 기법1은 방어가능하나. 기법 2는 방어 한것이 아님.

==> 임의로 만든 로그인페이지 연결해서 아이디 패스워드를 얻을 수 있음


출력값

어디? Controller  (실습 fillter)

        View (실습  encoder)

어떻게? htmlEncoding

           XSSFilter를 적용  

어떤 방법? 화이트리스트 필터

            블랙리스트 필터

입력값 어디? Filter 컴포넌트, (실습 XSS Filter)

인터셉터 컴포넌트(용도가 다름... 어떤값이 들어왔을 때 계속할지 차단할지)

어떻게?  htmlEncoding

           XSSFilter를 적용  

 - 어떤 ? 화이트리스트 필

            블랙리스트 필터


칼리리눅스 ...악성코드 배포.... 공격서버 커넥션




el문 ${}


<p>${board.content}</p>

html 인코딩... p테크의 텍스트로 변경

lucy xss 는 화이트 xss

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet


크로스 사이트 필터를 또 뚫는...   <IMG SRC="javascript:alert('XSS');"> <LINK REL="stylesheet" HREF="javascript:alert('XSS');">  ....브라우저마다 다르다. 


필터는 실제로 체이닝 기능밖에 없음

Spring MVC ; HttpServletRequestWraper   ;실제데이터를 싸는 기능  head, body 값을 확인


http://openeg.co.kr/383

filter 웹 컨테이너


디스페쳐 서블릿 스프링 컨테이너

web.xml 설명

->인코딩필터 -> 멀티파트 필터 -> 크로스 사이트 필터 

멀티파트 필터 : 멀티파트 리졸빙... 


a=10&b=10,20,30 -> wraper

http://openeg.co.kr/383




# 정규식

- 자바의 정규표현식은 특정한 규칙을 가지는 문자를 표현하는데 사용하는 형식 언어이다.

- java의 기본 API

ex) 이메일 정규식 [A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}



# 캡슐화의 위배

- OOP의 특징 !! : 상속 다형성 캡슐화

- 캡슐화 : data가 외부에서 직접적으로 접근못함... public, private 의도가 깨질때

- 싱글톤일 때 배열, 콜렉션의 데이터 관리에 유의할 것!!

   :heap 에서 저장된 전역으로 사용되는 변수 값이 바뀌어 다른 쓰레드 영향받음

public class RoleTest {

public static void main(String[] args) {

Role r = Role.getInstance();

System.out.println(r.adminLists());

String[] a = r.getAdminRoles();

a[0]="홍길동";

System.out.println(r.adminLists());

}

}

해결방안 : get, set 메서드 구현시 복사하여 사용

public class Role {

    private String[] adminRoles = {"admin","root","manager"};

    private static Role role;

    private Role() {}

    

    public static Role getInstance() {

     if ( role == null ) {

     role=new Role();

     }

     return role;

    }    

public String[] getAdminRoles() {

String[] n = new String[adminRoles.length];

System.arraycopy(adminRoles,0,n,0,adminRoles.length);

return n;

}

생략


# 파인드시큐리티 버그 간단한 보안 툴 이용

- 일반 보안툴 :800개 ~1200개

- 파인드 시큐리티 버그 : 30개

정탐 , 오탐

- 보안 취약점과 보안약점은 검사하는 방법이 다름 , 최근 인공지능을 로깅으로 이용하려는 추세

- 오탐이 많아도 미탐이 적으면 사용. 미탐률이 적은게 가장중요.

findsecuritybugs

http://find-sec-bugs.github.io/download.htm

이클립스 플러그인에 저장


728x90

1. 하둡 self 스터디

http://hadoop.apache.org/

 

리눅스 서버 우분투, 센토스==>우분투 로 설치

http://studyforus.tistory.com/221

 

우분투 설치

http://www.ubuntu.com/download/server

https://rorlab.gitbooks.io/railsguidebook/content/appendices/ubuntu14server.html    

Ubuntu Server 16.04 LTS

https://www.virtualbox.org/wiki/Downloads

64bit 설정
bios 설정 A->C->i ->E
Advanced>cpu Configuration > intelvirtualization Technology >Enable 저장

cmos bios

http://forensic-proof.com/archives/181

 

bios 열기 F10

https://www.debian.org/releases/lenny/i386/ch03s06.html.ko

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Hdww&articleno=1598692&categoryId=254457&regdt=20080110160349

 

컴퓨터 정보보기 : dxdiag

 

selection sort

 

 for (int i = 0; i < names.length-1; i++) {//기준
   for (int j = i+1; j < names.length; j++) {//비교
    if (names[i].compareTo(names[j])>0) {
     //두이름 바꾸기
     String temp=names[i];
     names[i]=names[j];
     names[j]=temp;
    }
   }
  }
class
package day0714;

//public class Apple{}
//bin에 apple이 생성됨 컴파일 된것.
//하나의 파일안 public 1클래스와 같은것 1개만 가능
//하나 패키지안 클래스이름 중복은안됨
class Apple{
	//1. 멤버 변수 & 상수
	String msg = "Happy Day!";
	//2. static이 안붙으면 인스턴스(new) 필요.
	static final String MESSAGE="Java Class!";//상수는 대문자로 생성
	//3. private
	private String myName="황정음";//자기 자신만 접근
	//DTO class ;getter method
	public String getMyName() {
		return this.myName;//this는 생략가능 static 제외하고는 기본
	}
	//setter method
	public void setMyName(String myName) {
		//단, 멤버변수명이 지역변수명과 같을 경우 
		//반드시 멤버변수 앞에 this를 써 주어야 한다.
		this.myName = myName;//this 없이 myName을 this.myName으로 인식못함
	}
	
}
public class Ex10_class {
	
	public static void main(String[] args) {
		//1. static 멤버변수는 클래스명으로 접근이 가능하다. 
		System.out.println(Apple.MESSAGE);
		//final 상수는 값 변경을 할 수 없다. 
		//Apple.MESSAGE="자바클래스";
		
		//2. static이 없는 변수
		//일반 멤버변수는 인스턴스가 있어야 접근이 가능함
		Apple apple = new Apple();
		System.out.println(apple.msg);
		
		//3.System.out.println(apple.myName);//error: private은 접근 안됨
		System.out.println(apple.getMyName());
		apple.setMyName("훈민");
		System.out.println(apple.getMyName());
		
	}

}

/*
클래스
1. 데이터 묶기위한 자료형,배열과 다르게 다른 타입가능
2. 캡슐화 상속 다형성 
3. 접근제한자(=접근 지정자)
Public>protected(자식클래스만 봄)>default(같은 패키지)>private(자기가 가진 클래스만 접근가능)
4. 설계구조
클래스명()		|클래스 헤더
멤버변수/상수	|멤버필드
생성자			|
메서드(동작)	|멤버 메서드
5. 
static
은 메모리가 하나.
static메서드는 static만 접근가능
(멤버접근이안됨, 일반변수는 자기자신생성사용)
생성자 ; 생성할때 호출되는 메서드
6.
[] 생략가능
[접근제한] [클래스 종류] class 클래스명
7.
final(최종클래스_자식 클래스 생성안됨),추상클래스 
8. 멤버필드
변수와 상수, 데이터
static 객체 생성된 모든 인스턴스에서 공유하는 데이터 
상수: 고정된 값 변하지 않는값.final이 상수고 주로 static을 사용함
변수: 프로그램이 종료 될 동안 값이 변경될 수 있는 값
9. 멤버 메서드
static메서드(클래스 메서드), 
instance메서드; 객체 생성해야만 사용. 
*/
/*
VO(Value Object)
DTO(Data Transfer Object)
DAO(Data Access Object)
 http://sumin172.tistory.com/107*/
야구게임
package day0714;

import java.util.Random;
import java.util.Scanner;

public class Ex05_baseball {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Random r = new Random();
		int comsu[]=new int[3];
		int usersu[]=new int[3];
		String str;
		int cnt=0;
		int ball, strike;
		//1. 컴퓨터수 입력 comsu: 1~9 사이 난수를 각 배열에 넣어줄것
		//중복되는 숫자가 있으면 다시 구한다.
		for (int i = 0; i < comsu.length; i++) {
			comsu[i]=r.nextInt(9)+1;
			for (int j = 0; j < i; j++) {
				if (comsu[i] == comsu[j]) {
					i--;
					break;
				}
			}
		}
		// 2. 유저 수 입력
		while (true) {
			cnt++;
			System.out.println(cnt+"회 :");
			str=sc.nextLine();
			//길이가 맞지 않으면 다시 입력
			if (str.length()!=3) {
				System.out.println("\t3개의 숫자로 입력하세요");
				cnt--;
				continue;
			}
			//문자열인 3개의 숫자를 int 배열에 담기
			for (int i = 0; i < usersu.length; i++) {
				//문자 0(48)빼기
				//문자 1은 실제 십진수로 49이다.
				usersu[i]=str.charAt(i)-'0';
				//System.out.println(usersu[i]);
			}
			//중복숫자가 있으면 다시 입력하기
			boolean sw=false;
			exit:
			for (int i = 0; i < usersu.length; i++) {
				for (int j = 0; j < i; j++) {
					if (usersu[i]==usersu[j]) {
						sw=true;
						break exit;						
					}
				}
			}
			//같은 숫자가 있으면 sw true이다.
			if (sw) {
				System.out.println("\t중복된 숫자가 있어요");
				cnt--;
				continue;
			}
		

			// 3. 결과
			ball=strike=0;
/*			for (int i = 0; i < usersu.length; i++) {
				if(comsu[i]==usersu[i])strike++;
			}
			if(comsu[0]==usersu[1]||comsu[0]==usersu[2]) ball++;
			if(comsu[1]==usersu[0]||comsu[1]==usersu[2]) ball++;
			if(comsu[2]==usersu[0]||comsu[2]==usersu[1]) ball++;*/
			
			for (int i = 0; i < usersu.length; i++) {
				for (int j = 0; j < usersu.length; j++) {
					if (comsu[i]==usersu[j]) {
						//자릿수가 같은지 비교
						if (i==j) strike++;
						else ball++;
					}
				}
			}
			
			//System.out.printf("comsu: %4d%4d%4d", comsu[0], comsu[1], comsu[2]);
			//System.out.printf(", usersu: %4d%4d%4d", usersu[0], usersu[1], usersu[2]);
			System.out.println("s: " + strike + "b:" + ball);
			if (strike==3) {
				System.out.println("정답입니다. 정답은"+str);
				break;
			}
			if (cnt==10) {
				System.out.println("시간오버");
				break;
			}
		}
		sc.close();
	}
}
/*[야구 게임 문제]

1. int comsu[]=new int[3];
 : 1-9 사이 난수를 각 배열에 넣어줄것.
 : 중복되는 숫자가 있으면 다시 구한다.

2. int usersu[]=new int[3];
   String input -> 이 변수로 3자리 숫자를 입력받아
   usersu 에 각각 넣어준다.
 : 입력받을때도 중복숫자가 있거나 길이가 맞지 않으면
   다시 입력받는다

3. usersu 와 comsu 를 각각 자릿수별로 비교하여 입력한 숫자가
  있으면 스트라이크인지 볼인지를 판단한다.
  (자릿수도 맞으면 스트라이크, 있기는 하지만 자릿수가
   틀리면 볼, 즉 3 스트라이크면 정답인것이다.)

4. 10회 이내에 못받추면 "시간오버" 출력하고 프로그램을 종료시킨다.

[결과 화면]

<정답이 357 일경우>

1회 : 123
   0 스트라이크 1볼
2회 : 343
  중복된 숫자가 있어요..다시 입력하세요.

2회: 345
   0 스트라이크 1볼
3회 : 678
   0 스트라이크 1볼
4회: 537
   1 스트라이크 2볼
5회: 357
   3 스트라이크 0볼
   맞았습니다 정답은 357 입니다.



*/

인원수 구하기

inwon[age[i]/10]++;

 

 

순위 구하기
		for (int i = 0; i < score.length; i++) {
			rank[i]=1;
			for (int j = 0; j < rank.length; j++) {
				//상대방 점수가 더 높으면 등수가 1증가
				if (score[i]

 

 

+ Recent posts