OWASP Zap에서 SQL injection이 나와서 restapi에서 쿼리문들을 전부다 수정하게 됐다.
SQL 이 들어가있어서 SQL을 안쓰는데 이게 왜나왔나 싶었는데 그냥 쿼리문을 restapi로 보내면 다 위험도가 있는 이슈이다.
나무위키를 참조하면
INSERT INTO students (이름) VALUES ('학생 이름');
INSERT INTO students (이름) VALUES ('Robert');
DROP TABLE students;
--');
이런식으로 쿼리문 앞이나 뒤에 삭제및 주석 처리를 하는 쿼리를 붙혀버린다.
그래서 보안용으로 CrtptoJS로 인코딩해서 restapi에 입력되게 하였다.
client
var key = Math.random().toString() + Date.now();
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), key).toString();
server
let ciphertext = Context.ciphertext;
let key = Context.key;
//var bytes = CryptoJS.AES.decrypt(ciphertext, 'ajax');
var bytes = CryptoJS.AES.decrypt(ciphertext, key);
var encryptdata = bytes.toString(CryptoJS.enc.Utf8);