Em đang làm một blog ạ.
- Client truy cập vào enpoint REST web API như: HTTP GET
myweb.com/api/topic/categorys
để lấy list categorys JSON về làm menu. - Hoặc triển khai Odata chuẩn RESTful như: HTTP GET
myweb.com/Odata/serviceRoot/Airports?$filter=contains(Location/Address, 'San Francisco')
- Client cũng có thể áp dụng GraphQL để search, sort, filter, … data phía server.
Khi server nhận được request, cho dù server có sử dụng ORM gì đi nữa thì đích đến cuối cùng vẫn là execute câu lệnh native SQL, vậy tại sao dev frontend không viết câu lệnh SQL tại client luôn cho tiện
Vậy là em đã cho javascript tại browser gửi http post với body là câu lệnh select SQL. Server nhận được chuỗi string này liền execute ngay và response hết những gì mà database return về . Thông thường em phải mở 3 tab:
- 1 tab mở tool database management studio để xem quan hệ bảng.
- 1 tab viết backend, định nghĩa URL cho web API.
- 1 tab code frontend phải nhìn xem backend định nghĩa cách lấy data như thế nào.
Hiện tại em chỉ cần mở 2 tab để code thôi
- 1 tab mở database xem bảng.
- 1 tab viết frontend nhưng không cần nhìn sang file controller của backend nữa mà nhìn sang database luôn.
Có 2 vấn đề xảy ra:
- Web sẽ bị lộ thông tin, vì hacker được phép
SELECT * FROM
tất cả các bảng, nhưng đây là blog, toàn những bảng public nhưTOPIC, COMMENT, IMAGE, ....
trong DB có bao nhiêu data đều show ra hết rồi, nếu xem được tableUSER
thì password cũng đã bị hash hết rồi. Crawl cũng đủ lấy được hết data trong DB không cần hack.
=> Tạm bỏ qua issue này, thêm nữa là hacker không hứng thú với data blog, cũng không rảnh để hack những web nhỏ.
- SQL injection hoặc client thực thi câu lệnh
CREATE, UPDATE, DELETE, ...
=> Em fix bằng cách:
– Viết function xử lý chuối SQL sao cho chỉ cho phép câu lệnh SELECT thôi.
– Khi client muốn chỉnh sửa data thì vẫn làm theo cách thông thường, có validate JWT.
Hiện tại web em đã go live được 1 tháng rồi, mỗi ngày có khoảng 100 lượt truy cập (theo google analytics) nhưng vẫn chưa bị hack vì hacker sẽ không ngờ tới trên đời này lại có người thiết kế quái dị như thế này
Em muốn hỏi nếu cứ tiếp tục như này thì web em còn lỗi bảo mật tìm ẩn nào nữa không nếu em vẫn tiếp tục làm liều như thế này?
Em cảm ơn.