Roxy FileManager یک فایل آپلود کارآمد بسیار کم حجم و رایگان میباشد که Php و Net. را پشتیبانی میکند اما مشکل امنیتی داشت که در نسخه 1.4.5 رفع گردیده و میتوانید هم اکنون از سایت www.roxyfileman.com آن دریافت کنید.
اما این مشکل به چه صورت بود:
در داخل پوشه این ابزار فایل conf.json وجود دارد که اگر آن را با Notepad باز کنید تنظیمات پیش فرض این ابزار را مشاهده میکنید که در خط 28 موارد ممنوعه برای آپلود به عنوان FORBIDDEN_UPLOADS ذکر شده و از آپلود فایلهای خطرناکی که در روش هک Shell Upload مورد استفاده قرار میگیرند جلوگیری میکند. تا اینجا همچی عالیه D: !
اما در Roxy File Manager امکان دیگری وجود دارد و آن تغییر نام فایلهای آپلود شده میباشد که پسوند و نوع فایل در این حالت بررسی نمیشود و شما به راحتی میتوانید فایل Shell خودتان را در هنگام آپلود تغییر نام دهید مثلاً فایل شما Shell.php بوده و شما با تغییر نام آن به Shell.phpJPG میتوانید آن را آپلود کنید سپس در محیط ابزار آن را تغییر نام دهید و نیت خیر خواهانه خودتان را به انجام برسانید.
از این رو اگر از Roxy File Manager نسخه پایینتر از 1.4.5 استفاده میکنید حتماً بروز رسانی نمائید !.
نحوه استفاده از این ابزار را میتوانید در این پست افزونه مدیریت فایلهای رایگان Roxy FileMan برای TinyMce و CkEditor مشاهده نمائید.
ممکن است برای شما هم پیش آمده باشد که بخواهید در برنامهتان از دیتابیس SQLite استفاده کنید و دسترسی به آن از طریق برنامههای SQLite Browser امکان پذیر نباشد؛ به زبان ساده، امنیت آن را تامین کنید.
SQLite امکان تعیین کلمهی عبور را به شما میدهد تا به وسیلهی آن بتوانید دیتابیس را رمزنگاری کنید تا امکان باز کردن آن به صورت عادی وجود نداشته باشد.
برای ایجاد کلمه عبور در دیتابیسی که از قبل رمزنگاری نشده است و یا تغییر کلمه عبور دیتابیسی که قبلا رمزنگاری شده است، به این صورت عمل کنید:
برای حذف کلمه عبور در دیتابیسی که از قبل رمزنگاری شده است باید تابع ChangePassword را با مقدار null و یا "" فراخوانی کنید.
برای بازکردن دیتابیس رمزنگاری شده و یا ایجاد یک دیتابیس رمزنگاری شده باید کلمه عبور در ConnectionString (همانند مثال بالا) قید شود و یا با فراخوانی تابع SetPassword قبل از فراخوانی تابع Open این کار را انجام داد. در صورتی که کلمه عبور در ConnectionString قید شود باید به صورت cleartext باشد. در حالیکه وقتی از تابع SetPassword استفاده میکنید میتوانید کلمه عبور را به صورت آرایه ای از byte نیز تعریف کنید.
در صورتیکه بخواهید ارتباطی را که وجود دارد، به یک فایل دیتابیس دیگر متصل کنید باید به صورت زیر عمل کنید:
- در صورتیکه کلمه عبور به صورت cleartext میباشد:
- در صورتیکه کلمه عبور به صورت باینری میباشد:
SQLite امکان تعیین کلمهی عبور را به شما میدهد تا به وسیلهی آن بتوانید دیتابیس را رمزنگاری کنید تا امکان باز کردن آن به صورت عادی وجود نداشته باشد.
برای ایجاد کلمه عبور در دیتابیسی که از قبل رمزنگاری نشده است و یا تغییر کلمه عبور دیتابیسی که قبلا رمزنگاری شده است، به این صورت عمل کنید:
// بازکردن دیتابیسی که از قبل رمزنگاری نشده است SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3"); cnn.Open(); // دیتابیس رمزنگاری شده. ارتباط با دیتابیس همچنان صحیح و برقرار باقی میماند cnn.ChangePassword("mypassword");
برای حذف کلمه عبور در دیتابیسی که از قبل رمزنگاری شده است باید تابع ChangePassword را با مقدار null و یا "" فراخوانی کنید.
// بازکردن دیتابیسی که از قبل رمزنگاری شده SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword"); cnn.Open(); // حذف رمزنگاری از دیتابیس رمزنگاری شده cnn.ChangePassword( null as byte[] );
برای بازکردن دیتابیس رمزنگاری شده و یا ایجاد یک دیتابیس رمزنگاری شده باید کلمه عبور در ConnectionString (همانند مثال بالا) قید شود و یا با فراخوانی تابع SetPassword قبل از فراخوانی تابع Open این کار را انجام داد. در صورتی که کلمه عبور در ConnectionString قید شود باید به صورت cleartext باشد. در حالیکه وقتی از تابع SetPassword استفاده میکنید میتوانید کلمه عبور را به صورت آرایه ای از byte نیز تعریف کنید.
// SetPassword بازکردن دیتابیس رمزنگاری شده با استفاده از فراخوانی تابع SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3"); cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 }); cnn.Open();
در صورتیکه بخواهید ارتباطی را که وجود دارد، به یک فایل دیتابیس دیگر متصل کنید باید به صورت زیر عمل کنید:
- در صورتیکه کلمه عبور به صورت cleartext میباشد:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.sqlite"); cnn.Open(); cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.sqlite' AS [Protected] KEY 'mypassword'", cnn); cmd.ExecuteNonQuery();
- در صورتیکه کلمه عبور به صورت باینری میباشد:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3"); cnn.Open(); cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY X'FFEEDD102030'", cnn); cmd.ExecuteNonQuery();
اشتراکها
Syntax highlighting شبیه به GitHub
اشتراکها
معرفی OpenJDK ساخت مایکروسافت
Git Virtual File System (GVFS) is an open source system that enables Git to operate at enterprise-scale. It makes using and managing massive Git repositories possible
GVFS: Git at Enterprise Scale
اشتراکها
کتابخانه k6
اشتراکها
سورس باز شدن MSDN/TechNet
نظرات مطالب
مروری بر چند تجربهی کاری با SQLite
با سلام خدمت استاد عزیز.
من یه برنامه نوشتم که از بانک sqlite استفاده میکنه.
وقتی برناه رو توزیع میکنم روی بعضی از سیستمها پیغامی مبنی بر عدم پیدا کردن dll مذکور رو میده، به نظر شما مشکل از کجاست ؟