You are currently viewing Dùng AMPscript để mã hóa trong Marketing Cloud

Dùng AMPscript để mã hóa trong Marketing Cloud

Trong thế giới số hóa ngày nay, bảo mật thông tin trở thành một yếu tố không thể thiếu. Nhưng bạn đã bao giờ tự hỏi, làm thế nào mà những dữ liệu quan trọng của chúng ta lại có thể được bảo vệ một cách an toàn trong Salesforce Marketing Cloud?

Trong bài này Gâu Đần sẽ chỉ cho các bạn cách mã hóa và giải mã dữ liệu, cũng như giúp bạn hiểu được lý do tại sao và khi nào ta cần làm điều này nhé.

Encryption and Decryption functions in MC

Trong Salesforce Marketing Cloud ta có 2 function là: EncryptSymmetric()DecryptSymmetric()

Hẳn nhìn cái tên thì bạn cũng hiểu được function nào là mã hóa còn cái nào là giải mã rồi đúng không. Đọc thêm hai function trên ở đây EncryptSymmetric , DecryptSymmetric

Để cho đơn giản mình sẽ nói về EncryptSymmetric vì cái còn lại cũng tương tự vậy.

Syntax:

EncryptSymmetric(data,
                 encryptionAlgorithm,
                 passwordExternalKey,
                 passwordValue,
                 saltExternalKey,
                 saltValue,
                 ivExternalKey,
                 ivValue)

Nếu các bạn đọc document ở trên và để ý các parameter 3,4,5,6,7,8 tức là cái password, salt, và initialization vector thì sẽ có 2 style dùng. Đó là:

Note: Thuật toán mã hóa mình dùng ở đây là AES (Advanced Encryption Standard)

Cách 1: Dùng thẳng dữ liệu của 3 thằng này vào luôn cho function

set @encData = EncryptSymmetric(@data, 'AES', @null, @pwd, @null, @salt, @null, @iv)

Cách 2: Dùng External Key của 3 thằng này cho vào function. 3 variable @pwd, @salt, @iv ở style này là external key value nhé

set @encData = EncryptSymmetric(@data, 'AES', @pwd, @null, @salt, @null, @iv, @null)

2 cách này khác nhau ra sao?
Ở cách 1, bạn có value của password, salt, và initialization vector thì bỏ thẳng vào đó luôn. Ở cách 2 bạn phải trữ nó trong Marketing Cloud, dùng external key để trỏ đến value đang lưu trữ nó.

Vậy nên dùng cách nào? Mình recommend các bạn nên dùng cách 2, nó hơi tốn công một xíu thôi nhưng an toàn hơn nhiều vì muốn giải mã thì những cái key này phải có trên Marketing Cloud trước đã.

Key Management

Đầu tiên chúng ta cần 3 key là password, salt, và initialization vector.

Trong doc của Salesforce thì salt cần ít nhất 8-byte hexadecimal string và initialization vector (IV) ít nhất là 16-byte hexadecimal string. Thực tế doc không chính xác, vì cái IV cần đến ít nhất 32-byte hex.

Bạn có thể vào đây để tạo các giá trị hex value ngẫu nhiên. Nhớ để là 32 digits

Sau đó chọn ra 3 value để tạo. Vào Setup > Key Management > tạo 3 key:

Type: Symmetric cho password
Type: Salt cho salt
Type: Initialization Vector cho IV

Sau khi tạo xong ta sẽ có 3 external key cho 3 cái vừa tạo.

Encrypt and Decrypt in Marketing Cloud

Chúng ta cùng thử code xem nó có chạy được như ý không nào:

%%[
    /* External Key pwd */
    set @pwd = 'External Key pwd'
    /* External Key salt */
    set @salt = 'External Key salt'
    /* External Key IV */
    set @iv = 'External Key IV'

    set @data = 'gaudan.net'

    set @encData = EncryptSymmetric(@data, 'AES', @pwd, @null, @salt, @null, @iv, @null)

    set @clearData = DecryptSymmetric(@encData, 'AES', @pwd, @null, @salt, @null, @iv, @null)
]%%
Encrypted data: %%=v(@encData)=%%<br>
Clear data: %%=v(@clearData)=%%<br>

Output:

Encrypted data: sgZYCfMigSNZ/cD/I5wOEg==
Clear data: gaudan.net

Vậy là xong ta đã có thể dễ dàng mã hóa và giải mã trong Marketing Cloud!

But why?

Vậy ta nên mã hóa những dữ liệu nào?
Thật ra, bạn có thể mã hóa bất kỳ loại dữ liệu nào. Tuy nhiên, thông thường Gâu Đần sẽ dùng mã hóa cho những thông tin nhạy cảm như credential, cụ thể là client idclient secret.
Lý do là vì nếu bạn call API trong email hoặc trên cloudpage, bất kỳ user nào trong MC có quyền truy cập vào nội dung này cũng sẽ thấy được những thông tin đó.

Nếu giải mã dễ như vậy thì chẳng phải ai truy cập được cũng giải mã được sao?
Đúng là như vậy. Tuy nhiên, cần hiểu đúng rằng mục đích của việc mã hóa này không phải để ngăn người dùng trong MC giải mã, mà là để phòng trường hợp dữ liệu bị lộ ra ngoài. Khi đó, người ngoài dù có được dữ liệu cũng sẽ không thể giải mã nếu không có Marketing Cloud và không có key tương ứng.

Conclusion

Hy vọng qua bài viết này, bạn đã hiểu rõ hơn về cách mã hóa và giải mã dữ liệu trong Salesforce Marketing Cloud, cũng như tầm quan trọng của việc bảo vệ thông tin trong môi trường số.
Dù là client secret, API key hay bất kỳ dữ liệu nhạy cảm nào khác, hãy luôn cân nhắc mã hóa khi cần thiết để giữ an toàn cho hệ thống của bạn.
Đừng quên theo dõi mình để học thêm nhiều mẹo hay ho khác trong Marketing Cloud nha!