유튭 동영상 보다가 무서워서 메모하고 감
ㅊㅊ https://youtu.be/FoZ2cucLiDs?si=MAJzTlaCBnEwXEiu
1. Parameterized query
이렇게 쓰면 큰일남ㅜㅜ
pool.query('SELECT * FROM users WHERE id=' + 유저가보낸거);
pool.execute('SELECT * FROM users WHERE id=' + 유저가보낸거);
이렇게 써야 됨
pool.query('SELECT * FROM users WHERE id=?', [유저가보낸거]);
pool.execute('SELECT * FROM users WHERE id=?', [유저가보낸거]);
2. Stored procedure
프로시저 문법, 이런 방법도 있다. 코드 양이 많아지는 단점.
CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT)
BEGIN
SELECT * FROM users
WHERE CountryCode = country;
END
3. ORM
Object-Relational Mapping. 객체 관계 매핑. 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 프로그래밍 기술이라고 한다. 데이터베이스의 테이블을 객체로 변환하여, 개발자가 객체 지향 언어만을 사용하여 데이터베이스 데이터를 조작할 수 있게 도와줌. 이를 통해 데이터베이스 쿼리 없이 코드 내에서 데이터를 쉽게 관리하고, 개발 속도를 향상시킬 수 있다고.
ORM은 기술적인 접근 방식이지만, 이를 구현한 소프트웨어 라이브러리들이나 프레임워크들을 ORM이라고도 할 수 있다고 함..
*injection은 알아서 예방해 준다고.
SQLAlchemy(Python)
JPA/Hibernate(Java)
Sequelize(Node.js)
TypeORM, Prisma (Node.js, TypeScript, JavaScript(ES5, ES6, ES7, ES8))
Entity Framework(.NET)
Django ORM
ActiveRecord(Ruby)
Doctrine(PHP)
Drizzle(Ethereum....
4. 자주 쓰이는 injection용 코드 걸러내기
injection용 코드에 자주 사용되는 코드들이나 특수 기호들을 미리 걸러주는 방법
