목록Node.js/Express (31)
jm_p_op
one to one fieldmigrations/userinfo.jsqueryInterface.createTable('UserInfos',{ userId:{ type: Sequelize.STRING, references:{ model:'Users', key:'id' }, primaryKey:true, unique:true, }one to one field를 위한 unqiue값 설정type은 받아오는것이랑 같은것으로 제작references FK 받아는 filed와 값 정의Users.id 는 notnull 설정models/userinfo.jsUserInfo.init({ userId:{ ..
models.User.findAll({ attributes:["id"], where: { id: req.body.id, } }){"id":"test"}로 보내는 경우{"id":"test';' "}로 보내는 경우{"id":"test';'asdfasdf'asdf'asdf'asdf'asdf'asdf"}';를 추가하면 따음표로 뒤에 글자들을 'string'으로 바꿔줘 보호해준다.
modules/jwt.js sign은 비동기 verify는 동기(비동기로 권한 없는 친구에게 DB와의 통신량 늘릴필요 없음) expireIn : /ms단위 verify : error에 따른 response를 쓰는 곳에서 만들지 않고, 안에 만들어 쉽게 쓸수 있도록 제작 Authorization : str = "Bearer {{TOKEN}}" split 사용하여 오류 나는것은 제거 const randToken = require('rand-token'); const jwt = require('jsonwebtoken'); module.exports = { sign: async (user) => { const payload = { id: user.id, email: user.email }; const resul..
models.User.findAll({ attributes:["id"], where: { id:id } }) attributes를 사용하여 받으면 안되는 정보를 제한할수 있다. DB와의 트래픽 줄이기 가능
해시 함수 f(A)=B인 함수이고, B의 길이가 정해져 있어서 B를 사용하여 A 추측할수가 없다. MD5,SHA,CRC 등등 여러가지 종류를 가지고 있다. hash collision 다른 값으로 같은 해쉬값 존재 hash 공격 같은 a값에 대하여 f(a)=b 같은 b가 나옴으로, 특정 값에 대한 결과값을 알수가 있다. 모든 경우의 수를 때려 박고 추측가능 자주 사용하는 비밀번호, 생년월일등으로 범위 좁혀서 공격 salt a값에 salt를 추가함으로 b값을 다르게 만든다. 주로 DB에 random값으로 salt를 저장해서 사용된다. ramdom 경우의 수만큼 탐색하는데 시간복잡도가 증가 DB메모리 할당 필요, 같은 비밀번호에서 같은 값이 나올 가능성이 존재 password 암호화 const crypto =..
const models = require("../models") //Create models.User.create({column:value}) //Read models.User,findAll({/** * include: 모델 간의 관계 연결 * model : 어떤 모델인지 지정 * where: 쿼리 조건 설정 (id의 해당하는 유저가 쓴 댓글을 전체 조회) */ include:{column:value} }).then((comment)=>console.log("검색결과",comment)) //Update models.User.update({column:value}, {where:{column:value}}) //Delete //여러개 동시 삭제 가능 models.User.destroy({where:{col..
module.exports = { async up (queryInterface, Sequelize) { await Promise.all([ queryInterface.addColumn("Users","test3",{ type: Sequelize.STRING }), queryInterface.addColumn("Users","test4",{ type: Sequelize.STRING})]) } } Promise.all([행동1,행동2,...]) - 행동1,행동2.. 실행, 여러개 변동시 사용 queryInterface.renameColumn('table','before_column','after_column') : 칼럼명 변동 queryInterface.addColumn('table','column',{조건..