Sharecs.net
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm
No Result
View All Result
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm
No Result
View All Result
Sharecs.net
No Result
View All Result
Home Lập Trình Lập Trình Java

Lập Trình An Toàn Trong Phát Triển Ứng Dụng Web – Phần 1

by Nguyễn Tuấn
13/11/2020

Trong loạt bài này mình muốn giới thiệu tới các bạn về Lập Trình An Toàn Trong Phát Triển Ứng Dụng Web. Cái này gần như chúng ta phải đọc, hiểu và thuộc lòng ý giúp chúng ta học bảo mật web. Và cũng rất mong có sự đánh giá, sửa đổi, bổ sung từ các bạn đọc.

Mục Lục

  • Mục đích
  • Yêu cầu
    • Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection
    • Xử lý dữ liệu đầu vào tránh lỗ hổng XSS
    • Xử dụng Token trong các phương thức GET và POST tránh lỗ hổng CSRF
    • Kiểm soát các thao tác với file
    • Mã hóa dữ liệu nhạy cảm
    • Kiểm tra quyền truy cập của người dùng
    • User enumeration
    • Session fixation
    • Session Hijacking
    • Sử dụng Cookie an toàn
    • Chuyển hướng và chuyển tiếp thiếu thẩm tra
    • Để lộ dữ liệu của hệ thống 
    • Thất thoát thông tin do kiểm soát lỗi và ngoại lệ không tốt
    • Sử dụng Captcha an toàn
    • File inclusion
    • Command injection
    • Xml/Xpath injection

Mục đích

Đưa ra các yêu cầu về lập trình an toàn trong phát triển ứng dụng web.

Yêu cầu

Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection

Dữ liệu được nhập vào ( input ) từ người dùng phải được truyền dưới dạng tham số. Không được sử dụng cách cộng sâu trong các truy vấn với cơ sở dữ liệu.

Lập Trình An Toàn Trong Phát Triển Ứng Dụng Web - SQL Injection
Lập Trình An Toàn Trong Phát Triển Ứng Dụng Web
Xử lý dữ liệu đầu vào tránh lỗ hổng XSS

Encode dưới dạng HTML các ký tự đặc biệt do người dùng gửi lên máy chủ và các ký tự dặc biệt trong cơ sở dữ liệu trước khi gửi tới người dùng.

Xử dụng Token trong các phương thức GET và POST tránh lỗ hổng CSRF

Trong chức năng mà người dùng tương tác với cơ sở dữ liệu thông qua các from, liên kết. Phải sử dụng thêm biến token ( được tạo ra mỗi đầu phiên truy cập của người dùng) . Như một tham số trong phương thức GET hoặc POSTvà kiểm tra giá trị token này tại máy chủ để xác nhận hành vi của người dùng.

Kiểm soát các thao tác với file

Giới hạn chỉ cho phép các định dạng file theo yêu cầu của ứng dụng được phép upload lên máy chủ. Kiểm soát file upload ở máy chủ. Lưu trữ các file upload tại một thư mục riêng nằm ngoài thư mục web hoặc không cho phép truy cập, thực thi trên các thư mục đó.

Chặn các ký tự \, /, null và kiểm tra phần mở rộng của file khi xử lý với tên file trên máy chủ.

Mã hóa dữ liệu nhạy cảm

Những dữ liệu nhạy cảm trong cơ sở dữ liệu phải được mã hóa.

Kiểm tra quyền truy cập của người dùng

Kiểm soát quyền của người dùng trong mỗi request lên máy chủ.

User enumeration

Sử dụng chung thông báo lỗi cho cả 2 trường hợp nhập sai tên đăng nhập và mật khẩu trên trang đăng nhập vào hệ thống. Nhằm tránh trường hợp thông báo lỗi trên trang đăng nhập, phân biệt giữa nhập sai tên đăng nhập và sai mật khẩu. Dự vào đó kẻ tẩn công có thể thử và tìm ra các user có trên hệ thống.

Sử dụng capcha cho các chức năng đăng ký, reset/forgot mật khẩu để tránh các công cụ tự động khai thác lỗi user enumeration.

Session fixation

Tạo mới lại phiên người dùng ( renew session ) sau khi đăng nhập và xóa session cũ ( trên server ) sau khi log out. Tránh trường hợp Session của ứng dụng trước và sau khi đăng nhập/đăng xuất không thay đổi. Dẫn đến kẻ tấn công có thể sử dụng session do hacker tự định nghĩa. Sau khi lừa trình duyệt người sử dụng sử dụng session đó khi thực hiện đăng nhập/đăng xuất ứng dụng.

Session Hijacking

Không cho phép 2 phiên truy cập đồng thời, session cần đảm bảo khó bị phân tích, dự đoán, không chứa các thông tin hướng người dùng như ip, user-agentheader, địa chỉ Mac.

Lập Trình An Toàn - Session Hijacking
Session Hijacking
Sử dụng Cookie an toàn

Yêu cầu thiết lập thuộc tính ” HTTPOnly ” cho session cookie. Vì nếu session cookie không được sét thuộc tính ” HTTPOnly “. Kẻ tấn công có thể sử dụng mã javascript để đánh cắp cookie của người dùng.

Với các website sử dụng HTTPS cho các chức năng quan trọng, HTTP cho các chức năng thông thường, thì cần thiết lập thuộc tính “secure”cho các session cookie để đảm bảo session cookie này được truyền qua kênh truyền có mã hóa. Nếu không sử dụng thuộc tính này thì dù có sử dụng HTTPS cho chức năng quan trọng như đăng nhập, nhưng phiên làm việc vẫn có thể bị nghe lén, lấy cắp khi truyền qua HTTP.

Sử dụng Cookie an toàn - Lập Trình An Toàn
Sử dụng Cookie an toàn
Chuyển hướng và chuyển tiếp thiếu thẩm tra

Không cho phép người dùng cuối có thể can thiệp vào quá trình redirect từ ứng dụng web này sang ứng dụng web khác. Nếu cần sử dụng thì URL phải được kiểm tra, đảm bảo URL được redirect đến nằm trong danh sách cho phép của ứng dụng.

Để lộ dữ liệu của hệ thống 

Yêu cầu tất cả dữ liệu, tài nguyên hệ thống ( báo cáo, file lưu trữ khi xuất hệ thống xuất ra hoặc tải lên, file cấu hình,…) không được lưu trong thư mục cho phép truy cập trực tiếp không qua xác thực. Việc thực hiện tải ( download ) dữ liệu này phải qua bước xác thực và tham số trong link download phải được mã hóa, tránh để lộ đường dẫn tuyệt đối của file dữ liệu trên hệ thống.

Đối với các thệ thống đang triển khai yêu cầu các dữ liệu, tài nguyên hệ thống ( báo cáo, file lưu trữ khi xuất hệ thống xuất ra hoặc tải lên,…) phải được lưu trong thư mục bên ngoài thư mục chứa source code của web server.

Thất thoát thông tin do kiểm soát lỗi và ngoại lệ không tốt

Khi xử lý ngoại lệ và thông báo miêu tả lỗi yêu cầu chương trình không hiển thị chi tiết lỗi cho người dùng cuối, hạn chế thông tin hiển thị nhất có thể. Việc này nhằm ngăn cản kẻ tấn công dựa vào các thông báo lỗi chương trình để thu thập thông tin về hệ thống. Các thông tin lỗi này phải được log lại bên server để phục vụ bảo trì, xác định nguyên nhân lỗi ứng dụng…

Sử dụng Captcha an toàn

Với các chức năng quan trọng, ảnh hưởng đến dữ liệu quan trọng cần tránh chương trình tự động có thể thực thi các chức năng này thì cần sử dụng captcha để xác thực hành động thực thi là do người sử dụng thực hiện. Ví dụ như các chức năng: Đổi mật khẩu (renew password), cấp lại mật khẩu (reset password), nhớ lại mật khẩu (forgot password), chức năng đăng ký người dùng, chức năng trừ, cộng tiền, chức năng xóa hủy tài khoản, ….

Captcha có thể không sử dụng ngay khi thực hiện chức năng mà kích hoạt sau khi có dấu hiệu nghi ngờ có tác động do công cụ tự động. Ví dụ như: Chức năng đăng nhập thực hiện thất bại 5 lần liên tiếp, có khả năng bị bruteforce mật khẩu, lúc đó hệ thống sẽ yêu cầu người dùng cần nhập captcha. Cách sử dụng captcha an toàn, tham khảo Chỉ thị sử dụng Captcha an toàn số 05/CT-VTQĐ-KT ban hành ngày 04/01/2013.

File inclusion

Kiểm tra chặt chẽ các hàm include, require, require_once, include_once cho phép gọi các file khác trong hệ thống.

Command injection

Hạn chế tối đa sử dụng dữ liệu do người dùng đưa vào để gửi đến thực thi các lệnh của hệ điều hành.

Trường hợp bắt buộc phải sử dụng cơ chế trên thì cần validate chặt chẽ dữ liệu người dùng gửi vào, tránh các ký tự cho phép nối thêm các câu lệnh thực thi của hệ điều hành. Sử dụng whitelist là danh sách chứa các ký tự được phép xuất hiện trong dữ liệu, để so sánh, đối chiếu.

Xml/Xpath injection

Escape hoặc encode XML dữ liệu trước khi đưa vào file dữ liệu dạng XML, để tránh hacker có thể chèn dữ liệu có chứa thẻ xml gây ra sai lệch dữ liệu trong file xml.

Dữ liệu input từ người dùng phải được tham số hóa trước khi đưa vào thư viện xử lý Xpath.

P/s : Phần tiếp theo Sharecs muốn hướng dẫn chi tiết từng lỗi nên fix và cách phòng chống như thế nào, các bạn cùng đón chờ nhé !

5/5 - (2 bình chọn)
Tags: lập trình an toàn thông tintài liệu an toàn thông tin
ShareSendTweetShare

Cùng chuyên mục

No Content Available
Load More
Subscribe
Notify of
guest

guest

0 Comments
Inline Feedbacks
View all comments

Tài nguyên

Cân bằng phương trình phản ứng hóa

Tạo deep link

Custom Css Scrollbar – Render Code

Bài Viết Nổi Bật

  • Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

    Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

    1 shares
    Share 0 Tweet 0
  • Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

    45 shares
    Share 0 Tweet 0
  • Trắc Nghiệm Mạng Máy Tính Phần 3 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • 500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • Hướng Dẫn React Native Build apk File

    0 shares
    Share 0 Tweet 0
  • Trending
  • Comments
  • Latest
Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

19/02/2023
Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

31/08/2020
500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

23/08/2021
Hướng dẫn cài đặt React Native trên Windows – Phần 1

Hướng Dẫn React Native Build apk File

14/11/2020
Thư viện đồ họa trong Python – Source Code Bắn Pháo Hoa

Thư viện đồ họa trong Python – Source Code Bắn Pháo Hoa

18/03/2023
Chia sẻ quá trình để xây dựng 1 group Facebook cho newbie

Chia sẻ quá trình để xây dựng 1 group Facebook cho newbie

18/03/2023
Tính tổng – Two Sum Leetcode

Tính tổng – Two Sum Leetcode

14/03/2023
So sánh If Else và Switch Case

So sánh If Else và Switch Case

21/02/2023

Phản hồi gần đây

  • luan trong Thư viện đồ họa trong Python – Vẽ doraemon
  • tuan trong Nhận Diện Chó Mèo Python – Tensorflow – Neural Network – Deep Learning
  • Lê Thị Vân trong Fake Giấy Tờ Xác Minh Doanh Nghiệp Trên Facebook
  • Crom trong Cách Kích Hoạt Key Win 11 Bản Quyền –Active Win 11 – Win 10 Free

Donate

Mời Share’cs ly Cafe 

Liên hệ quảng cáo

Email: Sharecs.net@gmail.com

Hợp tác nội dung: Sharecs rất vinh dự được mời các bạn đóng góp những sản phẩm thiết kế, thủ thuật hay những chia sẻ hữu ích… để cùng chia sẻ rộng rãi tới mọi người!

Giới Thiệu

Sharecs.net là một website/blog cá nhân, chuyên chia sẻ những kiến thức xoay quanh công nghệ như máy tính, internet, phần mềm, lập trình,... Mình hi vọng, Sharecs sẽ mang lại những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

  • Giới Thiệu & Liên Hệ
  • Chính Sách Bảo Mật

CopyRight By Sharecs.net DMCA.com Protection Status

No Result
View All Result
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm

CopyRight By Sharecs.net DMCA.com Protection Status