Mọi sự cố gắng đều xứng đáng
Cao Hoàng Phúc
2 năm trước·3 phút đọc
Hellooo, sau một khoảng thời gian ít đụng đến lập trình, vì việc bước vào lớp 10 với một giáo trình mới của Bộ Giáo Dục thì em dành thời gian cho học tập trên trường nhiều hơn. Ngay sau khi thi cuối kỳ 2 lớp 10 xong thì em liền thăm lại chiếc web tâm huyết của mình năm nào để xem nó vẫn còn hoạt động tốt chứ nhỉ dù không có người dùng nào xài =)))
Việc làm khi trở lại niềm đam mê lập trình là lập các web cơ bản để ôn lại kiến thức HTML, CSS và Javascript. Sau đó, em học đến các vấn đề bảo mật của trang web trên Hacksplaining thì phát hiện ra rằng các queries SQL của em trên Back-end NodeJS không đảm bảo được an toàn, đặc biệt là rất dễ bị dính SQL Injection. Em liền bắt tay vào "bảo vệ" em nó ngay.
Trên Hacksplaining, họ đã cho một nguồn kiến thức lý thuyết và còn có cả ví dụ, cách bảo vệ cho từng ngôn ngữ, framework. Vậy nên, em cũng khá dễ dàng để tìm ra hướng giải quyết, cụ thể:
Những queries cũ của em tất cả đều thêm những dữ liệu mà người dùng nhập vào query chính của API, nếu kẻ gian phát hiện ra thì có thể chèn những điều kiện True, lấy dữ liệu từ database:
Sau khi tìm hiểu thì thư viện mysql2 có hỗ trợ placeholder, cụ thể là những dữ liệu mà người dùng nhập vào có thể được chèn vào SQL query một cách riêng biệt. Từ việc này, mysql2 đã có những lệnh để kiểm tra dữ liệu từ đó sẽ tránh được các trường hợp bị SQL Injection.
Cảm ơn các bạn đã đọc đến chỗ này, mong blog có thể giúp ích gì đó cho bạn ^_^.