Merlin Secure Token, benzersiz bir hash kodu kullanarak içeriğinizi korumanıza olanak tanır. Bu kod, bağlantıları yetkilendirmenize yardımcı olacaktır. Yalnızca statik distributionlarda çalışır.
Bu özelliği kullanabilmek için aşağıdaki adımları takip etmelisiniz:
1. Kenar çubuğuna tıklayarak Distributions sayfasına gidin.
2. Bir token ile güvence altına alınmak istendiğiniz statik distribution'a tıklayın.
3. Page Rules kısmına ilerleyin.
4. İlgili Page Rule'u seçin.
5. Secure Token bölümüne gidin.
6. Açılan menüden Yes'i seçin.
Artık Secure Token Policy etkinleştirilmiştir.
Bu aşamada iki yeni giriş alanı göreceksiniz: Add Client IP on Token Generation ve Secret.
7. Add Client IP on Token Generation açılır menüden Yes seçilirse, yalnızca bağlantıyı oluşturan istemcinin IP adreslerinden erişilebilen bağlantılar oluşturmanıza olanak tanır.
8. Secret, token üretiminde kullanılır. Alfasayısal bir dizidir, yani yalnızca harf veya rakam içerebilir.
9. Update Page Rule butonuna tıklayın.
Şimdi, secure token bağlantılarını oluşturmalı ve güvenli erişim için bunları web sitenize eklemelisiniz. Bağlantı oluşturma kodu aşağıdaki gibidir:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace Security
{
public class TokenGenerator
{
public static string CreateSecureLink(string url, string clientip, long second, string secret)
{
Encoding enc = Encoding.ASCII;
DateTime epochTime = newDateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan span = (DateTime.Now.AddSeconds(second).ToUniversalTime() -epochTime);
string timestr = span.TotalSeconds.ToString("0");
if(clientip== null)
{
clientip= "";
}
Uri uri = newUri(url);
string key = secret + uri.AbsolutePath + timestr + clientip;
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
Byte[] hashedDataBytes = md5Hasher.ComputeHash(enc.GetBytes(key));
string hash = Convert.ToBase64String(hashedDataBytes, 0, hashedDataBytes.Length);
hash = hash.Replace('+', '-').Replace('/', '_').Replace("=", "");
string returnurl = AddQuerryParameter2URL(url, "st", hash);
returnurl = AddQuerryParameter2URL(returnurl, "e", timestr);
return returnurl;
}
public static string AddQuerryParameter2URL(string url, string parameter, string value)
{
string seperator = "?";
if (url.Contains('?'))
seperator= "&";
return url + seperator + HttpUtility.UrlEncode(parameter) + "=" + HttpUtility.UrlEncode(value);
}
}
}
Güvenli bağlantının aşağıdaki biçimde olması gerekir:
https://mywebsite.com/{path}?st={secureToken}&e={expire}
Örnek:
Bu örnek için:
Secure Token | aQzw9y-dWC-A2xssn3eQ |
Path | resize/1000x622/d4a84822-ee8f-405a-656e-08d968514b.jpg |
Expire | 1656550447 |
Üretilen bağlantıları kontrol etmek için aşağıdaki kod bloğunu kullanabilirsiniz:
echo -n '$secret$path$expire' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
Örnek:
echo -n 'LL9U5SwiJVuyqzdGXpAPG1eIdFV/resize/500x374/fecb0ef6-dad8-4656-2b57-08d9cfb4e.jpg1640855540' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
Bu örnek için:
Secret | LL9U5SwiJVuyqzdGXpAPG1eIdFV |
Path | /resize/500x374/fecb0ef6-dad8-4656-2b57-08d9cfb4e.jpg |
Expire | 1640855540 |
Yorumlar
Yorum yazmak için lütfen oturum açın: oturum aç.