PDF Google Drive Downloader v1.1


Báo lỗi sự cố

Nội dung text Secure Coding Guideline & Checklist - dotNet- VNPAY .pdf

SECURE CODING GUIDELINE & CHECKLIST Ngôn ngữ: .NET Người soạn thảo: Tô Quang Dương Phòng An ninh thông tin & Quản lý tuân thủ Công ty Cổ phần Giải pháp Thanh toán Việt Nam (VNPAY)

Trang 3 A. Kiểm tra dữ liệu đầu vào (input) Mục đích: Input trái phép từ người dùng (hoặc có nguồn gốc từ người dùng) đến từ các parameter, URL, header, cookie,... đều có khả năng gây hại cho hệ thống. Kẻ tấn công có thể thiết kế một input đặc biệt để kiểm soát chuỗi truy vấn SQL (SQL query), chạy lệnh trên nền hệ điều hành (OS command) và thực hiện các hành động gây hại khác. Những lỗ hổng có thể bị khai thác: Các lỗi Injection như SQL injection, command injection, Cross Site Scripting (XSS), Server Side Request Forgery (SSRF) A1 Kiểm tra tất cả dữ liệu đầu vào (parameter, URL, header, cookie,...) dựa trên các tiêu chí phù hợp cho từng hoàn cảnh: ▪ Kiểm tra kiểu dữ liệu. Ví dụ, input “transfer_amount” (số tiền giao dịch) phải được kiểm tra và chỉ chấp nhận kiểu integer, float, double,... ▪ Kiểm tra phạm vi của dữ liệu đầu vào. Ví dụ, input giá sản phẩm phải có giá trị lớn hơn 0. ▪ Kiểm tra chiều dài dữ liệu. Ví dụ, input để biểu thị tên của quốc gia không thể có độ dài vượt quá 100 ký tự. ▪ Kiểm tra dữ liệu đầu vào bằng một danh sách cho phép (whitelist). Ví dụ, input “currency” chỉ chấp nhận “VND”, “USD, ... ▪ ... Ví dụ một số kiểu validator được hỗ trợ bởi thư viện opensymphony.xwork2 như sau: A2 Loại bỏ (filter) hoặc làm sạch (sanitize) các ký tự có khả năng gây hại. Một số ký tự có khả năng gây hại: ▪ Ký tự đặc biệt < > ' " ` % ^ * + , ; ( ) & : { } $ # [ ] ! | \ / ▪ Null bytes (%00) ▪ Ký tự xuống dòng (%0d, %0a, \r, \n)
Trang 4 A3 Tránh sử dụng dữ liệu đầu vào do người dùng nhập để làm các biến số cho việc gọi các hàm điều khiển hệ điều hành (OS command). Trong trường hợp bắt buộc cần thiết lập danh sách whitelist các đầu vào mong muốn. Ví dụ sử dụng whitelist: A4 Để phòng chống SSRF, kiểm tra địa chỉ IP hoặc URL đầu vào trước khi tạo kết nối. ▪ Whitelist các domain hoặc IP đáng tin cậy B. Encode và làm sạch dữ liệu đầu ra (output). Kiểm soát dữ liệu đầu ra Mục đích: Encode dữ liệu đầu ra giúp thay thế các ký tự đặc biệt thành các dạng encoded không gây hại, giúp phòng chống những hình thức tấn công injection ở phía client side. Những lỗ hổng có thể bị khai thác: Cross Site Scripting (XSS), HTML Injection, lộ các thông tin nhạy cảm,.. B1 Encode tất cả dữ liệu đầu ra được chèn vào các thành phần, thuộc tính HTML trước khi trả về trình duyệt web. ▪ HTML encode cho output chèn vào nội dung các HTML entity ▪ Attribute encode cho output chèn vào HTML attribute ▪ JavaScript encode cho output chèn vào biến JavaScript ▪ CSS encode cho output chèn vào HTML style property ▪ URL encode cho output chèn vào biến HTML URL ▪ ... ▪ Một số ký tự có khả năng gây hại bao gồm < > ' " ` % ^ * + , ; ( ) & : { } $ # [ ] ! | \ / ▪ Đầu ra là html, thực hiện html encode các kí tự đặc biệt (<>’”&) từ các nguồn dữ liệu không an toàn (Các tham số lấy từ GET/POST request, HTTP Headers, dữ liệu lấy từ DB, dữ liệu từ file upload,... có thể điều khiển được bởi người dùng) Cách 1: Dùng HttpUtility.HtmlEncode label1.InnerHtml = HttpUtility.HtmlEncode(str); Cách 2: Dùng InnerText label1.InnerText = str; ▪ Đầu ra là json, thực hiện encode dữ liệu trả về dạng object, không trả về dạng mảng

Tài liệu liên quan

x
Báo cáo lỗi download
Nội dung báo cáo



Chất lượng file Download bị lỗi:
Họ tên:
Email:
Bình luận
Trong quá trình tải gặp lỗi, sự cố,.. hoặc có thắc mắc gì vui lòng để lại bình luận dưới đây. Xin cảm ơn.