<-->
본문 바로가기

반응형

프로그래밍/nodeJS

(10)
Controller 수준의 유효성 검증 (express-validator) form POST 데이터 저장 경로 아래 그림은 데이터가 저장되는 경로이다. (HTML form의 경우) express-validator(Controller 수준 유효성 검증)는 필수!! VIEW수준 (HTML) 에만 유효성 검증을 적용하면 이렇게 악용 될수있다. noodler.tistory.com/45 HTML 유효성 검증 취약점 웹사이트에 유효성 검증 기능을 적용하다가 생각해냈다. view(MVC할때 view)쪽에서 HTML Form input의 pattern을 설정하고있는데 email name password 제출 생각해보니까 view 파일들은 브라우저에서 소스를 확 noodler.tistory.com 이는 Controller 수준에 유효성 검증을 추가해서 방지할 수있다.. express-valid..
HTML 유효성 검증 취약점 웹사이트에 유효성 검증 기능을 적용하다가 생각해냈다. view(MVC할때 view)쪽에서 HTML Form input의 pattern을 설정하고있는데 email name password 제출 생각해보니까 view 파일들은 브라우저에서 소스를 확인하고 수정 할 수 있고, 이를 악용하면 pattern만 쏙 지워서 이상한 데이터 값을 넣을수 있겠다 싶어 테스트해봤다. 일반적인 상황 하지만 여기서 pattern 속성을 지워준다면? pattern 속성 지움 원치 않은 결과가 나온다. 따라서 controller랑 model에서도 유효성 체크를 해줘야 한다!!!
bcrypt를 사용한 비밀번호 암호화 (local passport mongoose 패키지를 사용하면 더 간편하게 회원가입,로그인을 구현할수있다!) 깃허브에서 패키지 코드를 처음 열어봤다. 코드가 진짜 짧고 깔끔해서 놀랐다. 에러 조건도 확인할수있어서 시간들여 읽어볼만한거 같다. bcrypt는 평문 값을 해싱하고 그 값을 원래 값(평문 값)과 대조 할수있는 메소드를 가진 패키지다! github.com/kelektiv/node.bcrypt.js kelektiv/node.bcrypt.js bcrypt for NodeJs. Contribute to kelektiv/node.bcrypt.js development by creating an account on GitHub. github.com 기본 용어 해시: 평문 비밀번호를 복원할수 없는 문자열로 ..
flashMessage(connect-flash 패키지) 클라이언트가 웹사이트를 이용하다 요청 처리결과를 모르거나 알수없는 오류를 마주쳐서 당황하는것을 방지하기위해 미리 적어놓은 flashMessage로 요청 처리 결과나 에러를 띄워 줄 수있다. ex) "회원가입 완료" or "로그인 실패" flashMessage는 서버가 세션에 메시지를 저장한뒤 쿠키 데이터 형식으로 view(브라우저)에 응답해주는 방법으로 전해진다. flashMessage를 사용하기 위해서는 우선 세션을 미들웨어에 추가해줘야한다. Session npm i express-session -S const expressSession = require("express-session"); app.use(expressSession({ //이제 cookie-parser를 사용하지않아도 얘혼자서 parse..
ejs와 레이아웃(express template) ejs (Embedded JavaScript) JavaScript로 HTML 마크 업을 생성 할 수있는 간단한 템플릿 언어 다시말해 view를 동적으로 생성하는 템플릿 언어이다! (HTML안에서 자바스크립트(함수,변수) 사용한다고 생각하면됨) (HTML을 알고있다면 다른 템플릿 언어보다 훨씬 쉽게 익힐 수 있다.) 템플릿 엔진 .ejs파일을 HTML로 변환 시켜준다. app.set메소드로 템플릿 엔진을 설정해주면 된다. app.set('view engine','ejs'); ejs 문법 흐름 제어문 ex) 변수 값 ex) 예약어 ex) 다른 view파일을 불러 옴 ejs 예시 아래 코드들은 ejs를 사용하여 HTML내에서 javascript를 실행하는 예시다, (.ejs파일에서만 ejs문법을 쓸수있다) c..
미들웨어 구조와 기본 미들웨어 세팅 express는 미들웨어 구조를 사용하는 웹 프레임워크이다. HTTP 통신 -> 미들웨어 -> NodeJS 실행 순으로 실행된다. 1. body-parser npm install body-parser app = express(); app.use( express.urlencoded({ //bodyParser을 기반으로한 express버전 구문분석 메소드 extended: false, }) ); // 인코딩된 URL 구문 분석 app.use(express.json()); //bodyParser을 기반으로한 express버전 구문분석 메소드 2. ejs npm install ejs app.set("view engine","ejs); //애플리케이션 설정 메소드, view engine을 ejs로 사용한다고 명시..
(express+ nodeJS) CR"UD"작업의 필수 패키지 -> method-override CRUD(생성 읽기 업데이트 삭제) CRUD의 대부분은 VIEW에서 이나 을 통해 요청을 보내고 라우터가 요청을 읽어서 로직(콜백함수)를 통해 응답해준다. 하지만 , 의 메소드(제출방식) 속성에는 "POST","GET" 두가지 밖에 없기때문에 생성,읽기 작업밖에 할 수 없다. 업데이트와 삭제 작업을 하려면 요청 메소드 GET이나 POST을 PUT 또는 DELETE으로 매핑시켜주는 도구가 필요하다. npm i method-override -S 를 먼저 해주자 const methodOverride = require("method-override"); app.use(methodOverride("", { methods: ["POST", "GET"] }) methods는 요청에 사용될 메소드를 미리 저장해 놓는 ..
HTTP 모듈로 '간단한' 웹서버 구축하기 웹서버 : 클라이언트가 요청한 정보를 서버의 로직으로 처리하여 여러가지 형태로 응답해주는 도구 const http = require("http"), httpStatus = require("http-status-codes"), port =3000; const app =http.createServer((req,res)=> { //서버 인스턴스 생성(HTTP통신을 위한 도구) res.writeHead(httpStatus.OK, { //응답 컨텐츠의 기본 속성 설정 "Content-Type":"text/html" }); console.log(`method: ${req.method}`); console.log(`url: ${req.url}`); res.write(' write response! '); //응답중 ..

반응형