PDA

View Full Version : رمز کردن پارمترها در querystring



salmah
جمعه 14 فروردین 1394, 12:27 عصر
سلام
من همیشه از این فرمت

default.aspx?id=1
در ارسال پارامتر بین صفحاتم استفاده می کنم
ولی از اونجایی که کاربر میتونه این پارامتر را تغییر بده چه طور می تونم رمزش کنم

barzin144
جمعه 14 فروردین 1394, 13:23 عصر
به جای id از نوع int از Guid استفاده کن که هیچ وقت قبلی و بعدیش قابل حدس نیست.

Hamid2547
جمعه 14 فروردین 1394, 13:29 عصر
میتونی انکریپتش کنی به بیس 64 و وقتی خواستی نمایشش بدی دکریپتش کنی، از این کلاس استفاده کن:


using System;
using System.IO;
using System.Xml;
using System.Text;
using System.Security.Cryptography;



public class Encryption64
{

private byte[] key = {};
private byte[] IV = { 10, 20, 30, 40, 50, 60, 70, 80 };

public string Decrypt(string stringToDecrypt, string sEncryptionKey)
{
byte[] inputByteArray = new byte[stringToDecrypt.Length];
try
{
key = Encoding.UTF8.GetBytes(sEncryptionKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(stringToDecrypt);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding=Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch (Exception ex)
{
return ex.Message;
}
}
public string Encrypt(string stringToEncrypt,string sEncryptionKey)
{
try
{
key = Encoding.UTF8.GetBytes(sEncryptionKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);
MemoryStream ms = new MemoryStream();
CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(key,IV),Crypto StreamMode.Write);
cs.Write(inputByteArray,0,inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
return ex.Message;
}
}
}




Encryption64 en = new Encryption64();
string sEncrypted = en.Encrypt("Pradeep", "!#$a54?3");
MessageBox.Show(sEncrypted);
string sDecrypted = en.Decrypt(sEncrypted, "!#$a54?3");
MessageBox.Show(sDecrypted);


اطلاعات بیشتر (http://www.codeproject.com/Articles/33350/Encrypting-Query-Strings)
روش بهتر (http://madskristensen.net/post/httpmodule-for-query-string-encryption)