PDA

View Full Version : سوال: کد کردن QueryString



fakhravari
سه شنبه 19 مهر 1390, 19:00 عصر
با سلام
دوستان برای فرا خوانی یک دستور در ثفحه ای از aspx?id=2 استفاده میشود .
اگه میشه راهنمایی کنید که این id=2 را کد کنم که نشه شناسایی شد .
دوستان سرچ کردم در سایت جواب دقیقی نگرفتم.

m.soleimani
سه شنبه 19 مهر 1390, 20:14 عصر
الان این داره از متد گت استفاده می‌کنه فکر کنم باید از متد پست استفاده کنید./

moferferi
سه شنبه 19 مهر 1390, 22:17 عصر
سلام.من از این روش استفاده میکنم .فکر نکنم به ایم راحتی ها هک بشه
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace QueryStringEncryption
{
public class Cryptography
{
#region Fields

private static byte[] key = { };
private static byte[] IV = { 38, 55, 206, 48, 28, 64, 20, 16 };
private static string stringKey = "!5663a#KN";

#endregion

#region Public Methods

public static string Encrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));

DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Encoding.UTF8.GetBytes(text);

MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateEncryptor(key, IV), CryptoStreamMode.Write);

cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();

return Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
// Handle Exception Here
}

return string.Empty;
}

public static string Decrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));

DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Convert.FromBase64String(text);

MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);

cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();

return Encoding.UTF8.GetString(memoryStream.ToArray());
}
catch (Exception ex)
{
// Handle Exception Here
}

return string.Empty;
}

#endregion
}
}





using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;

namespace QueryStringEncryption
{
public static class UserActivation
{
#region Public Methods

public static void ActivateUser(string key)
{
string username = Cryptography.Decrypt(key);

// TODO: Activation Login
}

public static string GetActivationLink(string username)
{
string key = Cryptography.Encrypt(username);

StringWriter writer = new StringWriter();

HttpContext.Current.Server.UrlEncode(key, writer);

return string.Format("/default.aspx?key={0}", writer.ToString());
}

#endregion
}
}



using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace QueryStringEncryption
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request["key"]))
Response.Write(UserActivation.GetActivationLink("rasoulazari"));
else
Response.Write(Cryptography.Decrypt(Request["key"]));
}
}
}

fakhravari
سه شنبه 19 مهر 1390, 23:12 عصر
با سلام
ممنون میشم یه نمونه کار از کد های بالا ضمیمه کنید .

ramin149
سه شنبه 19 مهر 1390, 23:32 عصر
http://barnamenevis.org/showthread.php?222499-%D8%B1%D9%85%D8%B2-%DA%A9%D8%B1%D8%AF%D9%86-query-%D8%9F&highlight=encode+decod+query+string

در سایت جستجو انجام بده

fakhravari
چهارشنبه 20 مهر 1390, 00:26 صبح
با سلام خدمت دوستان ramin149 و moferferi عزیز
اقای moferferi من نمیتونم به چه شکل از این کد استفاده کنم اگر میشه یه نمونه بدید ممنون.

اقای ramin149 : من کد اقای راد دیدم : اما به چه شکل ازش استفاده کنم؟؟

به این شکل جواب نمیده
string kd;
protected void Button1_Click(object sender, EventArgs e)
{
kd = Encrypt(TextBox1.Text);
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox2.Text = Decrypt(kd);
}
به چه شکل استفاده کنم؟

dontspeak
چهارشنبه 20 مهر 1390, 00:55 صبح
توی کد کردن مواظب باشید. آیا کد کردن اونقدر ارزش داره که قسمتی از سئو رو از دست بدید؟ اون طریقی که توی ویدئوی آموزشی ساخت فروم توضیح دادم استاندارده. قابل هک هم نیست. از همون استفاده کنید (می دونید که هیچ چیزی امنیت مطلق نداره)
شاد و پیروز باشید

fakhravari
چهارشنبه 20 مهر 1390, 01:31 صبح
hi mr zaeri
برای انتقال داده های کاربر از پیجی به پیج دیگر چی پیشنهاد می کنید ؟
سشن
کوری استرینگ
گوگی
سوالم بیشتر روی امنیت انتقال

moferferi
چهارشنبه 20 مهر 1390, 09:08 صبح
سورس پروژه (http://storage.keyvan.ms/downloads/QueryStringEncryption.zip)

dontspeak
چهارشنبه 20 مهر 1390, 23:28 عصر
hi mr zaeri
برای انتقال داده های کاربر از پیجی به پیج دیگر چی پیشنهاد می کنید ؟
سشن
کوری استرینگ
گوگی
سوالم بیشتر روی امنیت انتقال

طبیعتا session. اما باید مراقب باشید که منابع رو فدای امنیت غیر لازم نکنید. توی کوئری هر نوع داده ای قرار نمی گیره اما تو session می تونی هر آبجکتی رو بزاری. اما session منابع بیشتری از سرور رو استفاده می کنه. شاد وپیروز باشید

sarasara
چهارشنبه 11 آبان 1390, 12:02 عصر
با سلام
دوستان برای فرا خوانی یک دستور در ثفحه ای از aspx?id=2 استفاده میشود .
اگه میشه راهنمایی کنید که این id=2 را کد کنم که نشه شناسایی شد .
دوستان سرچ کردم در سایت جواب دقیقی نگرفتم.
در صفحه مبدا:

"aspx?id="+ Server.UrlEncode("2")در صفحه مقصد:

]Id=Server.UrlDecode(Request["Id"].ToString())

fakhravari
چهارشنبه 11 آبان 1390, 16:10 عصر
با سلام sarasara
بازم به این شکل نشون میده
aspx?id=2

merlin_vista
یک شنبه 15 آبان 1390, 22:27 عصر
سلام دوست عزیز : اگه میخواید Id یک رکورد را از یک صفحه به صفحه دیگر انتقال بدی و مثلا در صفحه دوم آن رکورد را ویرایش کنی بهتر است از این روش استفاده کنی :
1 ) در دتتابیس یک فیلد مثلا با نام Gcode بسازید و نوع ان را niqueidentifier بگذارید که یک کد GUID است مانند این کد : 1F721E51-4C14-4F58-BC6D-69C0E2A8BBFD
2 ) به جای انتقال id به صفحه دوم Gcode را انتقال بدهید و جستجو یا ویرایش خود را بر اساس آن انجام بدهید و
در غیر این صورت به عنوان مثال من میتونم به جای 2 عدد 3 را وارد کنم و به رکورد بعدی دسترسی پیدا کنم و ان را ویرایش کنم .
توجه داشته باشید که GUID یک عدد کاملا رندم و 100% غیرتکراری است که قابل حدس زدن هم نیست .
با این سناریو دیگر نیاز به کد کردن کوئری استرینگ نیست

fakhravari
یک شنبه 15 آبان 1390, 23:32 عصر
با سلام
ممنون از جوابتون.
سوال من در باره aspx?id=2 نه تولید یک عدد رندم.
اگر منظور شما رو فهمیده باشم GUID یک عدد میده که تکراری نیست .ولی فکر نکنم راه حل خوبی باشه استفاده از دیتابیس برای ارسال یه QueryString
در کل سوالم این بود که وقتی که یک QueryString می فرستیم برای دریافت در adresbar دیگه aspx?id=2 نمایش نده .
از UrlWrit نمیشه کمک گرفت؟:متفکر:

merlin_vista
یک شنبه 15 آبان 1390, 23:52 عصر
http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovi der.aspx


در مورد GUID هم باید عرض کنم منظور من معادل هر id یک GUID برای انتقال بین صفحات وجود داشته باشه نه حذف ID

fakhravari
دوشنبه 16 آبان 1390, 12:24 عصر
با سلام
ممنون میشم یه سمپل بزارید.