WEB SYSTEM UPGRADE × SECURITY REMEDIATION
Đưa hệ thống web cũ
lên môi trường mới, an toàn.
Nâng cấp từng bước các hệ thống web đang chạy trên phiên bản PHP và framework đã hết hỗ trợ lên môi trường mới, an toàn. Song song, Việt Vang dùng công cụ chẩn đoán do chính mình phát triển để rà soát lỗ hổng trên toàn bộ mã nguồn, rồi sửa và chẩn đoán lại đến khi đạt.
Laravel
CodeIgniter
Các framework PHP khác
PHP & môi trường server
Dự án thực tế (Laravel): nâng cấp đồng thời 4 hệ thống
→
0
Lỗ hổng & lỗi phát hiện được (trước → sau khi sửa)
01 / CHALLENGES
Doanh nghiệp bạn có đang gặp những vấn đề này?
Vẫn chạy trên phiên bản hết hỗ trợ
PHP 7 và các framework phiên bản cũ (ví dụ Laravel 8) đã hết hỗ trợ chính thức. Có lỗ hổng mới cũng không còn bản vá.
Không nắm được bên trong source
Người phát triển ban đầu không còn, không biết rủi ro nằm ở đâu và nghiêm trọng đến mức nào.
Sợ nâng cấp làm hỏng hệ thống
Lo lên phiên bản mới thì các chức năng đang chạy sẽ lỗi, nên chưa dám động vào.
Chẩn đoán và sửa lỗi tách rời
Dịch vụ chẩn đoán bên ngoài chỉ dừng ở bản báo cáo. Muốn sửa các điểm bị chỉ ra lại phải thuê thêm.
02 / OUR OWN TOOL
Công cụ chẩn đoán do Việt Vang tự phát triển
“VV Laravel Checker”
Công cụ chẩn đoán chất lượng và bảo mật do đội kỹ sư từng làm rất nhiều dự án Laravel thực tế tự xây dựng. Tool phân tích sâu tới những cách viết đặc thù của Laravel mà các scanner thông thường dễ bỏ sót (định nghĩa route, Gate / Policy, Blade template, Eloquent), chỉ rõ “lỗi ở đâu, vì sao nguy hiểm, sửa thế nào”.
FEATURE 1
Bộ rule riêng theo chuẩn OWASP
Phát hiện lỗi phân quyền, IDOR (thao tác được dữ liệu của người khác), XSS, SSRF, open redirect, CSRF, cấu hình sai, đoạn code nguy hiểm… được thiết kế riêng cho Laravel.
FEATURE 2
Chạy nhiều loại kiểm tra cùng lúc
Ngoài rule riêng, tool chạy luôn kiểm tra lỗ hổng đã biết của thư viện phụ thuộc (composer audit), PHPUnit và phân tích tĩnh (PHPStan / PHP_CodeSniffer) trong một lần.
FEATURE 3
Kế hoạch xử lý theo mức ưu tiên
Phân loại theo mức độ nghiêm trọng (Critical / Error / Warning / Info) và mức ưu tiên xử lý (P0–P3). Tự động chấm Quality Score và quyết định có được release hay không (Release Gate).
FEATURE 4
Chứng minh kết quả bằng con số
Đối chiếu kết quả trước và sau khi sửa theo từng rule, từng file. Báo cáo rõ “đã sửa bao nhiêu”, “còn lại bao nhiêu”, “phát sinh mới bao nhiêu”.
Các rule phát hiện tiêu biểu
OWNERSHIP_IDOR
BLADE_XSS
SSRF
OPEN_REDIRECT
CSRF
SESSION_FIXATION
MISCONFIGURATION
WEAK_PASSWORD_POLICY
UNSAFE_EVAL
OBFUSCATED_PHP
ROUTE_MISSING_VALIDATION
Báo cáo chẩn đoán thực tế
Mỗi lần chạy, tool xuất một báo cáo HTML xem được ngay trên trình duyệt (ảnh dưới là báo cáo thật, đã ẩn tên dự án).
Trước khi sửa: 84 lỗi ・ Score 79/100 ・ Chưa được release

Sau khi sửa: 0 lỗi ・ Score 100/100 ・ Được release

03 / CASE STUDY
Dự án thực tế: dịch vụ business matching đang vận hành (Laravel)
Không dừng dịch vụ, chúng tôi nâng cấp từng bước 4 bộ source từ Laravel 8 → 9 → 10 → 11, PHP 7.x → 8.3. Song song, dùng VV Laravel Checker để chẩn đoán và sửa lỗi, rồi chẩn đoán lại trong cùng điều kiện để đối chiếu trước và sau.
PROJECT PROFILE
Dịch vụ web business matching
do doanh nghiệp Nhật Bản vận hành
Nền tảng kết nối và giao thương giữa các doanh nghiệp. Hiện vẫn đang chạy production, được doanh nghiệp từ khắp thế giới sử dụng hằng ngày.
Số lỗi phát hiện theo từng hệ thống
103
0
80
0
95
0
84
0
Phân loại theo mức độ (tổng 4 hệ thống)
* Một số cảnh báo đã được xác nhận phạm vi ảnh hưởng, sau đó được loại trừ có chủ đích trong file cấu hình (có ghi lại lý do). Các mục loại trừ vẫn theo dõi được trong báo cáo.
04 / FIX EXAMPLES
Phát hiện ra, và sửa tận nơi
Không dừng ở chẩn đoán, kỹ sư của chúng tôi trực tiếp sửa những điểm bị phát hiện. Dưới đây là ví dụ sửa lỗi trong dự án thực tế (code được rút gọn để minh hoạ).
Xoá được dữ liệu của công ty khác
Chỉ cần đổi ID là xoá được bảng giá của nhà cung cấp khác. Đã thêm bước kiểm tra chủ sở hữu.
- $item = PriceList::find($request->id); - $item->delete();
+ $this->authorize('ownsSupplierResource', [PriceList::class, $id]);
+ $item = PriceList::query()
+ ->where('id', $request->id)
+ ->where('supplier_id', Auth::user()->supplier->id)
+ ->first();
+ $item?->delete();
Màn hình, API dùng được khi chưa đăng nhập
Các route quan trọng như nhập dữ liệu chưa có xác thực. Đã thêm xác thực và kiểm tra quyền.
- Route::get('/import_supplier',
- [ImporterController::class, 'importSupplier']);
+ Route::get('/import_supplier',
+ [ImporterController::class, 'importSupplier'])
+ ->middleware('auth');
+ // Phía Controller: $this->authorize('runLegacyImport');
Chèn mã độc vào màn hình (XSS)
Các template trang quản trị đang xuất dữ liệu không escape. Đã sửa đồng loạt sang cách xuất an toàn.
- <a href="{!! url('detail/' . $item->id) !!}">Chi tiết</a>
+ <a href="{{ url('detail/' . $item->id) }}">Chi tiết</a>
Chuyển hướng không an toàn
Các lệnh redirect tự ghép chuỗi URL được thống nhất về một class dùng chung, kiểm tra theo danh sách cho phép.
- return redirect('/404');
- return redirect('/detail-company.html/' . $id);
+ return SafeRedirect::toNotFound();
+ return SafeRedirect::toRoute('buyer.detail', ['id' => $id]);
Ngoài ra còn sửa cấu hình CORS dùng wildcard, tăng chính sách mật khẩu, ngừng công khai /phpinfo, gỡ bỏ thư viện cũ có chứa eval nguy hiểm (khoảng 2.300 dòng)…
05 / SERVICE SCOPE
Trọn gói từ khảo sát đến giám sát sau release
Khảo sát hiện trạng & biện pháp tạm thời
Trước khi nâng cấp chính thức, áp dụng ngay các biện pháp có hiệu quả tức thì: làm an toàn php.ini (ẩn thông tin phiên bản, siết chế độ session…), điều chỉnh giới hạn tài nguyên, giới hạn truy cập cho đăng nhập và upload.
Nâng cấp lên PHP 8.3, 8.4
Build lại container image, thay thế mà vẫn giữ nguyên dữ liệu và volume. Kiểm tra phiên bản và smoke test sau khi thay.
Nâng cấp framework từng bước
Laravel, CodeIgniter…: nâng chắc chắn từng phiên bản một theo hướng dẫn nâng cấp chính thức của từng framework (ví dụ Laravel 8 → 9 → 10 → 11). Cập nhật thư viện phụ thuộc và sửa các thay đổi không tương thích ở phần mail, lưu trữ file, cấu hình.
Chẩn đoán & sửa lỗi bảo mật
Dùng tool chẩn đoán riêng (dự án Laravel dùng VV Laravel Checker) để chẩn đoán trước khi sửa, rồi sửa các điểm bị phát hiện. Sau khi sửa chẩn đoán lại, xác nhận không còn lỗi tồn đọng, không phát sinh lỗi mới, rồi gửi báo cáo.
Chuẩn hoá thông tin xác thực & phân quyền
Bảo mật thông tin kết nối DB và file .env, sửa lại quyền file (bỏ quyền 777 mở toàn bộ…), rà soát cấu hình kết nối.
Regression test, release & giám sát
Regression test các chức năng chính: đăng nhập, import CSV, gửi mail, upload, export… Đưa lên production trong khung giờ bảo trì (có thể rollback trong 15 phút), giám sát log 1–2 tuần sau release.
06 / SCHEDULE
Lịch triển khai tiêu chuẩn: 10 ngày làm việc
Nhân sự: 2 developer + 1 tester (ví dụ với dự án Laravel 2 app; thay đổi tuỳ framework và quy mô)
07 / PRICING
Chi phí tham khảo
Ví dụ: hệ thống 2 app (nâng cấp PHP + Laravel 8 → 11)
US$2,500
Khoảng 15 man-day ・ Đơn giá US$170 / man-day
* Giá tham khảo dựa trên báo giá của dự án thực tế, thay đổi theo loại framework, quy mô source, phiên bản và cấu hình hạ tầng. Chúng tôi cũng nhận riêng gói chẩn đoán bảo mật hoặc tư vấn phạm vi sửa lỗi. Buổi tư vấn đầu tiên và báo giá sơ bộ hoàn toàn miễn phí.
08 / WHY VIỆT VANG
Vì sao chọn Việt Vang
Đảm bảo chất lượng khách quan bằng tool riêng
Không dựa vào cảm tính của người làm. Trước và sau khi sửa đều chẩn đoán theo cùng một tiêu chuẩn, kết quả giao cho khách bằng con số và báo cáo.
Kinh nghiệm bảo mật với khách hàng Nhật Bản
Đã thực hiện chẩn đoán an toàn thông tin website cho doanh nghiệp nhà nước Nhật Bản, và phát triển hệ thống cho khách hàng Nhật Bản, Đức.
Trọn gói từ chẩn đoán đến sửa lỗi và vận hành
Không dừng ở bản báo cáo. Cùng một đội chịu trách nhiệm từ sửa lỗi, test, release production đến giám sát.
Bắt đầu với buổi tư vấn miễn phí
Hãy cho chúng tôi biết hệ thống đang dùng PHP và framework nào, phiên bản bao nhiêu, quy mô source khoảng bao nhiêu. Chúng tôi sẽ đề xuất phạm vi, thời gian và chi phí dự kiến.
7-9-11 Trần Xuân Hòa, TP. Hồ Chí Minh, Việt Nam
