본문 바로가기
반응형

Web Security/SecureCoding22

XSS와 lucy xss Sax filter XSS란? Cross-site Scripting 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취 자바스크립트를 사용하여 공격하는 경우가 많음 Text-Only 게시판 등에서는 XSS가 발생하는 경우는 없다 Stored XSS 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방식 Reflected XSS URL 파라미터(특히 GET방식)에 스크립트를 넣어 서버에 저장하지 않고 그 즉시 스크립트를 만드는 방식 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격을 성공시키기 어려움 방어 방법 XSS는 데이터를 입출력 할 때.. 2024. 1. 19.
JS) SQL 삽입 소프트웨어 개발보안 보안 위협에 대응할 수 있는 소프트웨어를 개발하기 위한 일련의 보안 활동으로, 소프트웨어 개발 생명주기(SDLC)의 각 단계별로 요구되는 보안활동을 수행하는 것을 의미한다. SQL 삽입 데이터베이스와 연동된 웹 응용프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안약점을 말한다. 자바스크립트에서는 관계형 데이터베이스, NoSQL등 다양한 유형의 데이터베이스 시스템과 상호작용할 수 있는 라이브러리를 제공한다. - 데이터베이스 드라이버 : 클라이언트와 커넥터를 사용해 데이터베이스와 직접 상호작용 (mysql) 개발자가 직접 쿼리 문자열을 정의하고, 그 결과를 그대로 .. 2023. 2. 24.
보안결정을 신뢰할 수 없는 입력 값에 의존 - 응용프로그램이 외부 입력값(쿠키, 환경변수, 히든필드 등))에 대한 신뢰를 전제로 보호메커니즘을 사용하는 경우 공격자가 입력값을 조작할 수 있다면 보호메커니즘을 우회할 수 있게 된다. 시스템의 상태정보와 중요한 정보는 서버에만 저장한다. 중요한 정보를 클라이언트 쪽에 저장할 경우, 암호화와 무결성 검사를 거친 데이터만 저장되도록 한다. 외부입력과 관련된 검사가 자바스크립트를 통해 브라우저에서 이루어지더라도, 서버측에서 재검사를 한다. cookie 말고 session으로 안전하지 않은 코드 ▼ 안전한 코드 ▼ 2023. 2. 1.
SQL 삽입 공격 : Hibernate - 질의문 생성 시 상수 문자열만 사용한다. - 외부의 입력에 따라 질의문을 수정해야 한다면 인자를 받는 질의문을 상수 문자열로 생성한 후, 쿼리의 인자값을 setParameter(), set() 등의 메소드를 사용하여 설정한다. 안전하지 않은 코드 1 ▼ public void listHoney() { Session session = new Configuration().configure().buildSessionFactory().openSession(); try { Properties props = new Properties(); String fileName = "Hibernate.properties"; FileInputStream in = new FileInputStream(fileName); prop.. 2023. 2. 1.
안전하지 않은 리플렉션 - 동적 클래스 적재(loading)에 외부의 검증되지 않은 입력을 사용할 경우, 공격자가 외부 입력을 변조하여 의도하지 않은 클래스가 적재되도록 할 수 있다. - 외부의 입력을 직접 클래스 이름으로 사용하지 않고, 외부의 입력에 따라 미리 정한 후보(white list)중에서 적절한 클래스 이름을 선택하도록 한다. 안전하지 않은 코드 ▼ public void workType() { Properties props = new Properties(); // ... if( in != null && in.available() > 0 ) { props.load(in); if(props == null || props.isEmpty()) return; } Strong type = props.getProperty("t.. 2023. 2. 1.
반응형