You are currently viewing Bảo mật cho SFMC Cloudpage

Bảo mật cho SFMC Cloudpage

Chào mọi người, trong bài viết này Gâu Đần sẽ chia sẻ với các bạn một số cách để bảo vệ thông tin trên các trang Cloudpage của mình trong Salesforce Marketing Cloud. Việc bảo mật dữ liệu khách hàng là rất quan trọng, và để giúp các bạn yên tâm sử dụng Cloudpage mình sẽ hướng dẫn một số cách bảo mật cơ bản và kiểm soát quyền truy cập vào trang. Hy vọng các tip nhỏ này sẽ giúp tăng thêm lớp bảo vệ cho dữ liệu khách hàng của bạn! 😄

Enable security headers trên trang CloudPage

Các bạn có thể đơn giản add những dòng này vào trang Cloudpage của bạn:

<script runat=server>
    Platform.Response.SetResponseHeader("Strict-Transport-Security","max-age=200");
    Platform.Response.SetResponseHeader("X-XSS-Protection","1; mode=block");
    Platform.Response.SetResponseHeader("X-Frame-Options","Deny");
    Platform.Response.SetResponseHeader("X-Content-Type-Options","nosniff");
    Platform.Response.SetResponseHeader("Referrer-Policy","strict-origin-when-cross-origin");
    Platform.Response.SetResponseHeader("Content-Security-Policy","default-src 'self'");
</script>

Salesforce Source: CloudPages Security Best Practices

Chặn crawler bot và gửi dữ liệu trái phép

Ngoài ra bạn có thể chặn bot crawl trên trang của bạn và chặn gửi dữ liệu đến trang của bạn mà không phải từ trang chính chủ!

Bài này anh Ivan Razine đã viết và chỉ ra rất hay. Mình không đi sâu vào vì anh ấy viết quá rõ ràng rồi. Bạn có thể tham khảo bài viết ấy ở đây How to protect your Cloud pages.

Giới hạn truy cập Cloudpage thông qua địa chỉ IP

Nôm na ý tưởng là ta sẽ kiểm tra IP. Đúng thì cho truy cập trang (E.g. hiện content là Authenticated) còn không thì hiện content khác (E.g. hiện content là Unauthenticated) hoặc chuyển hướng trang.

Find client IP

var clientIP = Platform.Request.ClientIP;
Write(clientIP);

Check IP và render content

<script runat="server">
Platform.Load("Core", "1");

var allowedIPs = [
    "xxx.xxx.xxx.xxx" // Put your IP here
    ];

var yourIP = Platform.Request.ClientIP;
var validIp = false;
for (var i = 0; i < allowedIPs.length; i++) {
    if (allowedIPs[i] == yourIP) {
        validIp = true;
        break;
    }

}
    if (validIp) {
</script>
<h1>Authenticated</h1>

<script runat="server">
Platform.Load("Core", "1");
} else {
</script>

<h1>Unauthenticated</h1>

<script runat="server">
Platform.Load("Core", "1");
}
</script>

Các bạn có thể thấy, rất đơn giản ta đã có thể hạn chế truy cập trang Cloudpage của mình thông qua địa chỉ IP.

Vậy còn trường hợp các bạn muốn chặn truy cập thông qua dải IP thì sao? Hehe, cái này thì Gâu Đần sẽ enhance code trên ở dưới nhé.

Restrict Cloudpage access trên dải IP

Ví dụ ở đây mình muốn cho IP range ở 2 dải sau được truy cập Cloudpage

192.0.1.1 đến 192.0.1.254

118.225.246.1 đến 118.225.246.30

Đầu tiên mình sẽ format các IP range này và bỏ vào trong một array

var allowedIPs = [
    '192.0.1/1-254', //IP range 1
    '118.225.246/1-30' //IP range 2 
];

Sau đó sẽ tìm, thu thập và bóc tách giá trị của IP và đem so sánh với từng giá trị trong allowedIPs để biết được liệu IP của ta có thuộc trong các IP range ở trên không.

<script runat="server">
Platform.Load("Core", "1");

var allowedIPs = [
    '192.0.1/1-254', //IP range 1
    '118.225.246/1-30' //IP range 2  
];

var clientIP = Platform.Request.ClientIP;

var clientIP_part_1 = clientIP.substring(0,clientIP.lastIndexOf('.'));
var clientIP_part_2 = clientIP.substring(clientIP.lastIndexOf('.') + 1);

//Convert String to number
    clientIP_part_2 = Number(clientIP_part_2);

var validIp = false;

for (var i = 0; i < allowedIPs.length; i++) {
    var ip_part_1 = allowedIPs[i].substring(0, allowedIPs[i].indexOf('/'));
    var ip_part_start = allowedIPs[i].substring(allowedIPs[i].indexOf('/')+1, allowedIPs[i].indexOf('-'));
    var ip_part_end = allowedIPs[i].substring(allowedIPs[i].indexOf('-') + 1 );

    //Convert String to number
        ip_part_start = Number(ip_part_start);
        ip_part_end = Number(ip_part_end);

    if (clientIP_part_1 == ip_part_1 && clientIP_part_2 >= ip_part_start &&  clientIP_part_2 <= ip_part_end) {
        validIp = true;
        break // jump out of the loop
    }
}

if (validIp) {
</script>

<h1>Authenticated</h1>

<script runat="server">
Platform.Load("Core", "1");
} else {
</script>

<h1>Unauthenticated</h1>

<script runat="server">
Platform.Load("Core", "1");
}
</script>

Conclusion

Vậy là Gâu Đần đã chia sẻ với các bạn một số cách cơ bản để bảo vệ dữ liệu cho Cloudpage trên nền tảng Salesforce Marketing Cloud. Hy vọng sẽ giúp ích cho công việc của mọi người. Cảm ơn mọi người đã đọc bài viết! Hẹn gặp lại ở các bài viết tiếp theo.

Leave a Reply