Công cụ tìm kiếm lỗi bảo mật web - Chất lượng mà miễn phí
Sự khác biệt chính giữa lập trình viên mới vào nghề và chuyên nghiệp thường nằm ở khía cạnh bảo mật, tốc độ, tính ổn định khi xây dựng hệ thống, sản phẩm. Càng chuyên nghiệp thì bạn cần phải trang bị các kiến thức liên quan các khía cạnh nói trên, không những trau chuốt từ những dòng code, mà còn có góc nhìn tổng quan từ kiến trúc hệ thống lúc khởi tạo đến lúc triển khai. Bài viết này sẽ giới thiệu với các bạn công cụ để tìm kiếm lỗi bảo mật web, về tốc độ thì có thể xem ở đây.
Tại sao nên sử dụng công cụ – tự động hóa?
Trong lúc lập trình bạn sẽ phải sử dụng các công cụ hỗ trợ việc kiểm soát lỗi và giúp code rõ ràng, theo quy chuẩn nhất định ví dụ với Javascript thì có ESLint, FlowType, với PHP thì có PHPMD, PHPCS, Python thì có pylint…Sau khi code thì có Test (hoặc trước khi code nếu theo TDD), và sau cùng kiểm tra tổng thể về tốc độ và bảo mật.
Các công việc này sẽ lặp đi lặp lại cho đến khi … hệ thống đó không còn tồn tại, vậy thì cái gì lặp đi lặp lại thì ta sẽ dùng tự động hóa sẽ tiết kiệm công sức, thời gian, dành thời gian mà chơi game, kiếm người yêu, hoặc các thú vui bổ ích khác. Nếu bạn làm trong một ngôn ngữ nào đó mà chưa có sử dụng những thứ liên quan kể trên thì tìm hiểu thêm nhé.
Lỗi bảo mật web
Không có một phần mềm nào lại không có lỗi, dù cho đó là chương trình do những lập trình viên chuyên nghiệp nhất tạo ra. Vì lẽ đó mà bạn thấy Microsoft, Google, Facebook, Apple luôn có các chương trình thưởng cho ai tìm ra lỗi bảo mật của họ nhằm giảm thiểu các rủi ro xuống thấp nhất. Web cũng thuộc phần mềm, vậy nên nó cũng có lỗi mà điều đáng nói là sự nguy hiểm của web cực kỳ cao vì có tính công cộng, (đa phần web) ai cũng có thể truy cập được trong thế giới phẳng này.
Thông thường, bạn – người lập trình hoặc chủ website, thường ít chú ý đến lỗi bảo mật vì cho rằng website mình nhỏ không ai để ý, và đây là nguy nhân cơ bản nhất dẫn tới việc hạn chế tầm nhìn khi lập trình và triển khai website. Nó làm cho lập trình viên chủ quan trong lúc lập trình và càng chủ quan khi triển khai dẫn đến sơ hở tồn tại cho đến khi nó bị khai thác. Điển hình là vụ VNAirlines, và gần đây là Vietnamworks để nhắc nhở lập trình viên rằng luôn luôn có đối tượng muốn tấn công bạn, sản phẩm của bạn, khách hàng của bạn. Suy nghĩ “khi website lớn sẽ quan tâm đến bảo mật” là hoàn toàn sai lầm, mình cá là bạn chẳng định nghĩa được website của bạn như thế nào là lớn, khi nào nó lớn.
Hãy quan tâm đến bảo mật ngay từ những dòng code đầu tiên trước khi quá muộn.
Công cụ
Mình nói là quan tâm đến bảo mật ngay từ đầu, nhưng không có nghĩa là phải biết hết tất cả các kỹ thuật tấn công, nếu biết nhiều kỹ thuật tấn công một cách thành thạo có lẽ bạn không phải lập trình viên mà đang làm chuyên gia bảo mật rồi hoặc đang bóc lịch cũng nên :D. Mà nếu không biết thì có tìm ra lỗi cũng đâu sửa được, thôi kệ cứ tìm ra đã hẳn tính.
Vega (https://subgraph.com/vega/)
Phần mềm mã nguồn mở viết bằng Java cho cả Window, Mac và Linux dùng để kiểm tra lỗi XSS, SQLInjection và một số lỗi bảo mật khác.
Tính năng:
- Giao diện trực quan
- Đa nền tảng
- Mở rộng module tấn công bằng Javascript, nghĩa là bạn dùng hiểu biết của bạn về hệ thống đích (của bạn nha) và viết phần tấn công bằng Javascript để tìm kiễm lỗ hổng.
- Có giới thiệu về kỹ thuật tấn công tương ứng lỗi phát hiện và đề nghị cách khắc phục
SQLMap (http://sqlmap.org/)
Phần mềm mã nguồn viết bằng Ruby mở kiểm tra lỗi SQLInjection, khá là mạnh trong khai thác SQLInjection nhưng tìm ra lỗi thì khó nếu website sử dụng mod_rewrite, tất nhiên nếu website có chỗ cho user nhập dữ liệu như search, login, register… thì vẫn kiểm tra khá tốt.
Tính năng:
- Đa nền tảng vì sử dụng command line
- Mạnh trong khai thác lỗi SQLInjection (thông tin của cơ sở dữ liệu)
Arachi Scanner (http://www.arachni-scanner.com/)
Phần mềm miễn phí kiểm tra toàn diện hệ thống bao gồm web, web server và cả OS.
Tính năng:
- XSS
- SQLInjection
- NoSQL
- Blind code Injection
- ….
Bạn xem thêm tại http://www.arachni-scanner.com/features/framework#Checks, nó nhiều quá nên không cần phải liệt kê hết. Điểm mạnh thì nhiều nên thành ra nó có điểm yếu là test mất nhiều thời gian, nên lời khuyên là nên để ít dữ liệu khi test thôi, càng nhiều liên kết thì test càng lâu.
Acunetix (https://www.acunetix.com)
Ngoại lệ có Acunetix là phần mềm trả phí, khá đắt, nhưng đắt sắt ra miếng, bạn có thể sử dụng thử trong vòng 14 ngày, đáng tiếc là chỉ sử dụng trên nền tảng Window. Cũng khá nhiều tính năng như của Arachni và một số tính năng mạnh khác, tuy nhiên Acunetix phù hợp với công ty có tài chính tốt vì phải trả phí hàng năm. So với doanh nghiệp nước ngoài thì không đáng kể, tuy nhiên nhất là so với anh em lập trình hoặc công ty khởi nghiệp thì CHÁT quá.
Fullstack Station!
Ngoại trừ Acunetix trả phí thì 3 cái còn lại không có lý do gì không sử dụng cả. Sử dụng cả 3 để đảm bảo mọi thứ nằm trong tầm kiểm soát, một khi đã loại bỏ được các cảnh báo, lỗi tìm được thì bạn đã loại bỏ đi khá nhiều rủi ro tiềm ẩn rồi. Ít nhất cũng loại bỏ một số lượng lớn các đối thủ sử dụng các phần mềm này để dò lỗ hổng website bạn.
Tuy nhiên, không thể nói là sau khi sử dụng các công cụ trên và khắc phục thì website bạn an toàn được, việc bảo mật cần thực hiện liên tục bằng nhiều hình thức, phương pháp, đồng thời nâng cao chất lượng lập trình, cũng như cập nhật hệ thống liên tục, đừng để đến lúc mất nhà mới lo làm chuồng nha.