|
|
Знаете ли Вы, что ... | |
...нарушения правил форума наказываются. Старайтесь их не нарушать. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
.NET & ASP.NET Вопросы программирования .NET, ASP.NET, Web Services и других WEB-технологий .NET. |
Ответить |
|
Опции темы | Опции просмотра |
15.01.2009 11:31 | #1 | ||
CAS (Code access security) problem occur when i want to implement StrongNameIdentityPermissionAttribute on my class/assembly. It always give me successful permission even without having public key.
Sample DLL Code Код:
using System; using System.Collections.Generic; using System.Text; using System.Security.Permissions; namespace SampleClass { [StrongNameIdentityPermission(SecurityAction.Demand, PublicKey = "0024000004800000940000000602000000240000525341310004000001000100515bd67fd29477e06c5cddea9c9ef2a85579de908e8141784d22e4822b0c16586072a02d75e490a6621601c637b821de9009951ff8a220654aa3ddc62c0a5da80f1f629760ff194dd9dc3c1e69436e04ff870dc5657795aa9c7434e499bcc504150fb6e0100e6a047bae1de2a01c26d0027898ecfcec6e5fd747d449a8493399")] public class Class1 { public string MySampleValue = ""; public Class1(string SampleValue) { try { MySampleValue = SampleValue; } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } Код:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Security.Permissions; using SampleClass; using System.Security; namespace SampleApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Encoding enc = Encoding.Default; //StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob(enc.GetBytes("0024000004800000940000000602000000240000525341310004000001000100515bd67fd29477e06c5cddea9c9ef2a85579de908e8141784d22e4822b0c16586072a02d75e490a6621601c637b821de9009951ff8a220654aa3ddc62c0a5da80f1f629760ff194dd9dc3c1e69436e04ff870dc5657795aa9c7434e499bcc504150fb6e0100e6a047bae1de2a01c26d0027898ecfcec6e5fd747d449a8493399")); //StrongNameIdentityPermission per = new StrongNameIdentityPermission(blob, "SampleClass", new Version("1.0.0.0")); SampleClass.Class1 clss = new Class1("Wachach!"); if (clss != null) MessageBox.Show(clss.MySampleValue); else MessageBox.Show("clss is null."); } } }
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|||
|
Ответить |
16.01.2009 11:47 | #3 |
TATU
student
Сообщений: 13
+ 5
3/3
– 0
0/0
|
Siz .snk formatli fay hosil qilishingiz va uni AssemblyInfo faylida
saqlashingiz lozim. Masalan: Код:
[assembly: AssemblyKeyFile("filenomi.snk")] Bu faylni("filenomi.snk") hosil qilish uchun .NET Framework SDK dan foydalanasiz. Masalan: Код:
sn -k <filenomi>.snk Keyinroq ushbu classni ishlatish uchunsiz ochiq kalitdan foydalanishingiz kerak.Bu ochiq kalitni olish uchun Secutil.axe kere buladi.Siz hosil qilmoqchi bo'lgan DLL/Assembly nomini ishlatgan holda ochiq kalitni(Public Key) 4iqarib olasiz. Код:
secutil -hex -c -s <sizningdll>.dll > kalit.txt Код:
[StrongNameIdentityPermission(SecurityAction.Demand, PublicKey = "ochiq kalit")] SecurityAction.Demand o'rniga SecurityAction.LinkDemand ni ham qo'llashingiz mumkin. Bu dll ni bowqa loyihalarda qo'llashda loyiha DIRiga yuqoridagi .snk faylni ko'chirib o'tqizish va AssemblyInfoda registrasiya qilish esizdan chiqmasin. Shunda har doim loyiha ochiq kalitdan foydalanib .snk ka orqali sizi klasizga murojaat qila oladi. Shunda kod himoyalanadi. Bu yerda yaxshigina misol bor. http://www.developer.com/img/article...0/Securing.zip |
|
Ответить |
16.01.2009 12:47 | #4 |
2 ulugbek,Before answering to this question Did u try yourself?
This works only on .Net Framework 1.1 And I need for .Net FrameWork 2.0 or later. Any comments and ideas will appreciated. Thank You!!! PS. This Forum not breathing
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|
|
Ответить |
16.01.2009 14:01 | #5 |
So I expected I found way myself
In AssemblyInfo.cs put following code regarding your case: Код:
[assembly: InternalsVisibleTo("SampleApp, PublicKey=002400000480000094000000060200000240000525341310004000001000100795F3BFD920B13E0267CA46EAFA218237904BB262A6650CF21F6427BEC72699970F84699111C211C6A32726957A623CBCD73870BE2BA57F6EDC5F169AC369DFFDE58FBC65DEF2D9F9E7628853C7D25FB34F5F1A64873F31777E674E66168F8721F16D96F55336C9766280D032D30B510EB058A065C6FB4AFCDF42327757019AF")] That's all
__________________
Те, кому нечего сказать, обычно говорят вдвое больше. |
|
|
Ответить |
|