ورود

View Full Version : امنيت در گزارشهاي stimulsoftrport



sh2007
دوشنبه 10 مرداد 1390, 10:30 صبح
دوستان سلام

وقتي بوسيله استيمل يك گزارش تهيه مي كنيم مجبوريم فايل مورد نظر را در مسير مشخص ذخيره كنيم و برنامه اطلاعات را به اين
فايل مورد نظر ارسال مي كند حالا سوال من اينه كه :
1- آيا مي شود فايل هاي استيمل را در درون پروژه استفاده كرد؟
2- در صورتي كه استيمل بصورت فايل مي باشد براي جلوگيري از دستكاري فايل مورد نظر كه در سيستم كاربر نصب شده
چه راهكاري اتخاذ شود؟ (فكر كنيد يوزر با برنامه نويسي ارتباط دارد و با نصب محيط استيمل اطلاعات فايل را تغيير مي دهد)

بنظر شما بهترين روش چه مي باشد؟
ممنون

Esmail Solhkhah
دوشنبه 10 مرداد 1390, 15:23 عصر
دوست عزیز شما لازم نیست همیشه گزارش رو بصورت یه فایل ذخیره و بازیابی کنید

اگه رو کامپوننت StiReport که رو فرم درگ کردید و دیزاینش کردید راست کلیک کرده و Property هاشو باز کنید

یه خاصیت داره بنام Save Report In Resource که گزارش رو تو ریسورسهای برنامه ذخیره میکنه

و از دست کاربر در امانه

روش بعدی اینه که گزارش رو تو دیتابیس ذخیره و بازیابی کنید.

موفق باشید

sh2007
پنج شنبه 03 شهریور 1390, 09:47 صبح
دوست عزیز شما لازم نیست همیشه گزارش رو بصورت یه فایل ذخیره و بازیابی کنید

اگه رو کامپوننت StiReport که رو فرم درگ کردید و دیزاینش کردید راست کلیک کرده و Property هاشو باز کنید

یه خاصیت داره بنام Save Report In Resource که گزارش رو تو ریسورسهای برنامه ذخیره میکنه

و از دست کاربر در امانه

روش بعدی اینه که گزارش رو تو دیتابیس ذخیره و بازیابی کنید.

موفق باشید


دوست من من پروپرتی Save Report In Resource رو برابر با True قرار دادم برای نمایش گزارش چکار کنم قبلا که فایل بود این کد رو می نوشتم


StiReport1.Load("CreditDebitRep1.mrt")
StiReport1.RegData(DsReport.CreditDebit1)
StiReport1.Show()
StiReport1.Clone()



حالا با ترو شدن این پروپرتی چه کدی بنویسم

ممنون

PetekDincos
پنج شنبه 03 شهریور 1390, 10:31 صبح
با سلام
شما می تونید از سورس گزارشتون یه DLL درست کرده و اون رو تو پوشه Debug قرار بدید و سورس گزارش را در داخل پرژتون قرار بدید به این صورت



StiReport Report = new StiReport();
Directory.CreateDirectory("Report");
string ReportName = "..//..//Report//MyRep.mrt";
string ReportDllName = "Report//MyRep.dll";
if (!File.Exists(ReportDllName))
{
Report.Load(ReportName);
Report.Compile(ReportDllName);
}
else
Report = StiReport.GetReportFromAssembly(ReportDllName);
Report.RegData("DataSourceName", MyList);
Report.ShowWithWpf();

و دیگه لازم نیست فایل *.mrt رو در خروجی قرار بدید با تشکر

Esmail Solhkhah
جمعه 04 شهریور 1390, 18:57 عصر
شما می تونید از سورس گزارشتون یه DLL درست کرده و اون رو تو پوشه Debug قرار بدید و سورس گزارش را در داخل پرژتون قرار بدید به این صورت

با تشکر از راهنمایی دوست عزیزمان مهدی آقازاده

به این نکته هم دقت کنید که فایلهای DLL که به اینصورت تولید میشن عین اسمبلی های دات نت به راحتی قابل دیکامپایل هستند

و با استفاده از ابزارهای مثل Dot Net Reflector میشه بطور کامل سورس رو دید

PetekDincos
جمعه 04 شهریور 1390, 22:21 عصر
با سلام
اگه بحث کرک و یا استفاده از نرم افزارهای دیکامپایل کننده پیش بیاد تو خود ریسورس هم قرار بدی باز می شه ریسورس کرد و فایل رو تغییر داد اما منظور منم این بوده که کاربر عادی نتونه فایل سورس mrt این نرم افزار رو تغییر بده با تشکر

Esmail Solhkhah
یک شنبه 06 شهریور 1390, 02:28 صبح
با سلام
اگه بحث کرک و یا استفاده از نرم افزارهای دیکامپایل کننده پیش بیاد تو خود ریسورس هم قرار بدی باز می شه ریسورس کرد و فایل رو تغییر داد اما منظور منم این بوده که کاربر عادی نتونه فایل سورس mrt این نرم افزار رو تغییر بده با تشکر



دوست عزیز اگه به پست اول دقت کنید :

فكر كنيد يوزر با برنامه نويسي ارتباط دارد و با نصب محيط استيمل اطلاعات فايل را تغيير مي دهد

معلومه که کاربر یه کاربر عادی نیست

اما منظور منم این بوده که کاربر عادی نتونه فایل سورس mrt این نرم افزار رو تغییر بده


و میتونه stimulreport رو نصب کنه و گزارش رو تغییر بده ولی وقتی گزارش تو ریسورس برنامه باشه دیگه نمیتونه این کار رو بکنه

فرض اینکه با ریسورسرها هم آشنایی داشته باشه فایل exe پروتکت شده دیگه دسترسی و تغییرش به اندازه اون dll آسون نیست

با تشکر

Sal_64
دوشنبه 21 شهریور 1390, 09:35 صبح
اگه رو کامپوننت StiReport که رو فرم درگ کردید و دیزاینش کردید راست کلیک کرده و Property هاشو باز کنید

یه خاصیت داره بنام Save Report In Resource که گزارش رو تو ریسورسهای برنامه ذخیره میکنه



سلام
من کامپوننت روی فرم درگ نمی کنم
و همه چیز رو به صورت کد نویسی انجام میدم
آیا برای این شیوه هم راه حلی وجود داره ؟

PetekDincos
دوشنبه 21 شهریور 1390, 22:22 عصر
با سلام
شما می تونید از سورس گزارشتون یه DLL درست کرده و اون رو تو پوشه Debug قرار بدید و سورس گزارش را در داخل پرژتون قرار بدید به این صورت



StiReport Report = new StiReport();
Directory.CreateDirectory("Report");
string ReportName = "..//..//Report//MyRep.mrt";
string ReportDllName = "Report//MyRep.dll";
if (!File.Exists(ReportDllName))
{
Report.Load(ReportName);
Report.Compile(ReportDllName);
}
else
Report = StiReport.GetReportFromAssembly(ReportDllName);
Report.RegData("DataSourceName", MyList);
Report.ShowWithWpf();

و دیگه لازم نیست فایل *.mrt رو در خروجی قرار بدید با تشکر

با سلام
از این روش استفاده کنید با تشکر

Sal_64
چهارشنبه 23 شهریور 1390, 08:01 صبح
با سلام
از این روش استفاده کنید با تشکر
سلام
با چه ابزاری گزراشم رو به dll تبدیل کنم؟
تشکر

PetekDincos
چهارشنبه 23 شهریور 1390, 09:52 صبح
سلام
با چه ابزاری گزراشم رو به dll تبدیل کنم؟
تشکر
با سلام
ایزاری برای این کار نیاز نیست کد بالا خودش این کار رو انجام می ده شما نام سورس گزارش رو تو سورس برنامت بهش می دی و مسیر و نام فایل dll ای که می خواهی گزارش با اون نام و در اون مسیر ساخته بشه رو می دی در همون مسیر اگر فایل dll وجود داشت از اون استفاده کرده و گزارش رو اجرا می کنه اگر وجود نداشته باشه یک فایل dll با اون نامی که قرار دادی کامپایل کرده و از اون dll کامپایل شده استفاده کرده و گزارش رو اجرا می کنه با تشکر

Sal_64
دوشنبه 04 مهر 1390, 08:18 صبح
با سلام
ایزاری برای این کار نیاز نیست کد بالا خودش این کار رو انجام می ده شما نام سورس گزارش رو تو سورس برنامت بهش می دی و مسیر و نام فایل dll ای که می خواهی گزارش با اون نام و در اون مسیر ساخته بشه رو می دی در همون مسیر اگر فایل dll وجود داشت از اون استفاده کرده و گزارش رو اجرا می کنه اگر وجود نداشته باشه یک فایل dll با اون نامی که قرار دادی کامپایل کرده و از اون dll کامپایل شده استفاده کرده و گزارش رو اجرا می کنه با تشکر

سلام
ممنون از توضیحاتتون
میشه یه نمونه برنامه کوچیک بزارید و توی اون نحوه انجام اینکار رو نشون بدین
تشکر

PetekDincos
دوشنبه 06 شهریور 1391, 23:48 عصر
سلام
من کامپوننت روی فرم درگ نمی کنم
و همه چیز رو به صورت کد نویسی انجام میدم
آیا برای این شیوه هم راه حلی وجود داره ؟

با سلام دوستان

آیا شما راه حلی برای سوالی که دستمون پرسیده دارید و دز ضمن برای اینکه بتونیم مسیر گزارشی که در سورس ذخیره شده را به متد Load آبجکت StiReport بدیم من از این شیوه استفاده می کنم



"..\\..\\MyReportName.mrt"

که در این حالت وقتی از داخل پوشه Debug به همراه خود پروژه اجرا می شه درسته ولی وقتی پوشه Debug رو تغییر مسیر می دم درست کار نمی کنه برای این چیکار کنم. با تشکر

Sal_64
یک شنبه 12 شهریور 1391, 13:42 عصر
با سلام دوستان

برای اینکه بتونیم مسیر گزارشی که در سورس ذخیره شده را به متد Load آبجکت StiReport بدیم من از این شیوه استفاده می کنم



"..\\..\\MyReportName.mrt"

که در این حالت وقتی از داخل پوشه Debug به همراه خود پروژه اجرا می شه درسته ولی وقتی پوشه Debug رو تغییر مسیر می دم درست کار نمی کنه برای این چیکار کنم. با تشکر

سلام . چه دلیلی برای جابجای پوشه ریپورتها بعد از نصب در سیستم کاربر وجود داره؟ خب جابجاش نکنید

PetekDincos
یک شنبه 12 شهریور 1391, 21:49 عصر
سلام . چه دلیلی برای جابجای پوشه ریپورتها بعد از نصب در سیستم کاربر وجود داره؟ خب جابجاش نکنید
من ریپورت ها رو در داخل خود گزارش قرار دادم و به صورت زیر آدرس می دم


..\\..\\MyReportName.mrt

و موقع دیباگ با vs چون فایل اجرایی داخل پوشه دیباگ می باشه درست کار می کنه ولی وقتی که می خوام فایل اجرایی رو از پوشه دیباگ بردارم و جایی دیگه ای استفاده کنم به خاطر اینکه این مسیر


..\\..\\

برای رسیدن به خود فایل گزارش دیگه وجود نداره خطا می ده فقط می خواستم که ببینم چطور باید گزارش ها رو در داخل پروژه ذخیره کنم . با تشکر

Sal_64
دوشنبه 13 شهریور 1391, 13:26 عصر
سلام- من چیز ویژوالی به برنامم اضافه نکردم و همه چی بصورت کد نویسی انجام شده -کاری که من کردم این بوده که در پوشه دیباگ فولدری قرار دادم و گزارشات داخل اون گذاشتم و در داخل برنامه آدرس دهی کردم و الان همراه با فایل اجراییم جابجاش میکنم و در سیستم کاربر قرار میدم

Sal_64
چهارشنبه 22 شهریور 1391, 19:44 عصر
من ریپورت ها رو در داخل خود گزارش قرار دادم و به صورت زیر آدرس می دم


..\\..\\MyReportName.mrt

و موقع دیباگ با vs چون فایل اجرایی داخل پوشه دیباگ می باشه درست کار می کنه ولی وقتی که می خوام فایل اجرایی رو از پوشه دیباگ بردارم و جایی دیگه ای استفاده کنم به خاطر اینکه این مسیر


..\\..\\

برای رسیدن به خود فایل گزارش دیگه وجود نداره خطا می ده فقط می خواستم که ببینم چطور باید گزارش ها رو در داخل پروژه ذخیره کنم . با تشکر

سلام - راههای مختلفی امتحان کردم و از برنامه هایی مثل smartassembly و ... هم استفاده کردم اما برنامه ها در زمان اجرا گزارشات به مشکل بر می خوردن - با استفاده از فیلم بسیار مفید این لیک میشه بدون مشکلی فایلهای گزارش و dll های استیمول به فایل اجرایی ضمیمه کرد که هم یکپارچگی برنامه در زمان جابجایی حفظ بشه و هم از دسترسی کاربر به فایل های گزارش جلوگیری میشه. http://s1.picofile.com/file/7485933010/Create_Portable.7z.html

PetekDincos
چهارشنبه 22 شهریور 1391, 21:48 عصر
با سلام
خود من با استفاده از پروتکتور Net Reactor بلدم فایلها رو چطور embed کنم اما برای خود من سواله که چرا وقتی می خواهی یه فایل سورس گزارش رو که در خود سورس برنامه قرار داده شده آدرس بدی اینطوری می شه باز ممنون از لطف شما . با تشکر

Sal_64
پنج شنبه 23 شهریور 1391, 11:28 صبح
با سلام
خود من با استفاده از پروتکتور Net Reactor بلدم فایلها رو چطور embed کنم اما برای خود من سواله که چرا وقتی می خواهی یه فایل سورس گزارش رو که در خود سورس برنامه قرار داده شده آدرس بدی اینطوری می شه باز ممنون از لطف شما . با تشکر

سلام - یعنی شما با دراگ کردن استیموال به روی فرم ،گزارشات ساختی ؟؟

PetekDincos
پنج شنبه 23 شهریور 1391, 18:35 عصر
با سلام
همین کاری که شما با WinRAR انجام دادید رو می شه با پروتکتورها و پکرها انجام داد من بایستی فایلهای mrt (سورس گزارش استیمول) رو کنار فایل اجرایی قرار بدم و با پروتکتور embed کنم تا کاربر عادی نتونه از اونها استفاده کنه . با تشکر

Sal_64
جمعه 24 شهریور 1391, 10:18 صبح
با سلام
همین کاری که شما با WinRAR انجام دادید رو می شه با پروتکتورها و پکرها انجام داد من بایستی فایلهای mrt (سورس گزارش استیمول) رو کنار فایل اجرایی قرار بدم و با پروتکتور embed کنم تا کاربر عادی نتونه از اونها استفاده کنه . با تشکر

سلام- تشکر- من فایلها داخل فولدر میریختم که جواب نمی گرفتم - الان دقیقا شما چه انتظاری داری؟

PetekDincos
پنج شنبه 23 آذر 1391, 10:47 صبح
با سلام
شما می تونید از سورس گزارشتون یه DLL درست کرده و اون رو تو پوشه Debug قرار بدید و سورس گزارش را در داخل پرژتون قرار بدید به این صورت



StiReport Report = new StiReport();
Directory.CreateDirectory("Report");
string ReportName = "..//..//Report//MyRep.mrt";
string ReportDllName = "Report//MyRep.dll";
if (!File.Exists(ReportDllName))
{
Report.Load(ReportName);
Report.Compile(ReportDllName);
}
else
Report = StiReport.GetReportFromAssembly(ReportDllName);
Report.RegData("DataSourceName", MyList);
Report.ShowWithWpf();

و دیگه لازم نیست فایل *.mrt رو در خروجی قرار بدید با تشکر

با سلام
تو پست بالا توضیح دادم و برای اینکه بتونی از فایلهای گزارش در کنار فایل اجرایی استفاده کنی و کاربر نتونه فایل گزارش شما رو با نصب Designer استیمول بخونه یا تغییر بده به جای اینکه به dll تبدیلش کنی بهتره هنگام ذخیره گزارش با پسوند mrx ذخیره کنی و یه password بدی و هنگام لود گزارش هم با متد مربوطش لود کنی . با تشکر

Sal_64
شنبه 25 آذر 1391, 15:03 عصر
سلام - شما نحوه تبدیل فایل mrt به dll توضیح میدید؟ و اینکه نحوه لود mrx هم کاملا شبیه mrt یا خیر ، میشه کدش رو بذارید ، تشکر

PetekDincos
دوشنبه 27 آذر 1391, 22:42 عصر
با سلام


نحوه تبدیل فایل mrt به dll توضیح میدید؟

شما فایل mrt رو کنار فایل اجرایی برنامه قرار می دید و سپس با استفاده از کد زیر


StiReport Report = new StiReport();
Directory.CreateDirectory("Report");
string ReportName = "MyRep.mrt";
string ReportDllName = "MyRep.dll";
if (!File.Exists(ReportDllName))
{
Report.Load(ReportName);
Report.Compile(ReportDllName);
}
else
Report = StiReport.GetReportFromAssembly(ReportDllName);
Report.RegData("DataSourceName", MyList);
Report.ShowWithWpf();

که در کد بالا فایل MyRep.mrt فایل سورس گزارشه و MyRep.dll فایل dll هست که می خواهیم تولید کنیم و در یه شرط if بررسی می کنه که اگر فایل dll نبود فایل سورس گزارش رو لود میکنه و اون رو به صورت dll کامپایل می کنه و اگر هم بود اون رو با استفاده از دستور StiReport.GetReportFromAssembly(ReportDllName فراخوانی می کنه و بعد با استفاده از RegData دیتاسورس رو با استفاده از یه دیتاسورس پر می کنه و گزارش رو Show می کنه

اما در مورد mrx فایلهای گزارش به صورت Encrypt هستند و شما موقع ذخیره به اینصورت با استفاده از یه key فایل گزارش رو Enc می کنید و هنگام لود گزارش باید با استفاده از همون Key اون رو Dec کنید که با استفاده از دستور LoadEncryptedReport این کار انجام میشه . با تشکر

علی فتحی
جمعه 14 اردیبهشت 1397, 00:36 صبح
سلام
PetekDincos (http://barnamenevis.org/member.php?169796-PetekDincos) ببخشید یک نمونه استفاده ازLoadEncryptedReport قرار میدی این روش که جالبه فایلها رمز گذاری میشه

cmsdqq2
جمعه 15 تیر 1397, 13:04 عصر
دوستان سلام

این تاپیک به نتیجه نرسید و به نظر بنده بسیار هم تاپیک مهمی هست.

بنده هم همین سوال رو دارم. اگر ریپورت ها با پسوند mrt ذخیره بشن، بعد از نصب برنامه، کاربر میتونه با نصب استیمول سافت به فایل گزارش دسترسی داشته باشه.

چطور میشه از این کار جلوگیری کرد؟

بنده فرم گزارشم رو با استیمول دیزاینرش طراحی کردم و با Data Set و Data Table به دیتابیس وصل شدم و با سی شارپ اومدم فرم report1.mrt رو Load کردم.

اگر فرم رو به صورت mrx، mrz، cs و ... ذخیره کنیم، به نظر شما مناسب هست؟ اگر با پسوند .cs ذخیره کنیم چطور لودش کنیم؟


کد لود با پسوند mrt:



da = new SqlDataAdapter(com);
da.Fill(ds1, "tbname");
DataTable dt1 = ds1.Tables[0];
stiReport1.Load("report.mrt");
stiReport1.RegData(dt1);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();

stiReport1.ShowWithRibbonGUI();

Mahmoud.Afrad
جمعه 15 تیر 1397, 22:22 عصر
خروجی به صورت کلاس سی شارپ بگیرید و ازش استفاده کنید.
http://barnamenevis.org/showthread.php?540680-%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4%D8%A7%D8%AA-stimulsoft-reports-%D8%A8%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85%D9%87%D8%A7%DB%8C-%D9%85%D9%82%D8%B5%D8%AF

cmsdqq2
شنبه 16 تیر 1397, 09:38 صبح
خروجی به صورت کلاس سی شارپ بگیرید و ازش استفاده کنید.
http://barnamenevis.org/showthread.php?540680-%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4%D8%A7%D8%AA-stimulsoft-reports-%D8%A8%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85%D9%87%D8%A7%DB%8C-%D9%85%D9%82%D8%B5%D8%AF



ممنون

نمونه کدی برای این مثال در دسترس دارین؟

cmsdqq2
دوشنبه 25 تیر 1397, 00:56 صبح
دوستان Render بهتر هست یا Show؟