راهی وجود داره که به فیلد از نوع file مقدار اولیه بدیم ؟

NabiKAZ

Well-Known Member
راهی وجود داره که به فیلد از نوع file مقدار اولیه بدیم ؟
منظورم اینه:
کد:
<input type="file" name="F1" size="20">
برای فرمی که قراره اتوماتیک submit بشه نیاز دارم.
میگن با استفاده از DOM میشه.
 
با نظر mazoolagh موافقم
اگه بشه ، این یه ضعف امنیتی میشه
چون شما می تونی یه فایل رو بدون اجازه کاربر اپلود کنی
 

NabiKAZ

Well-Known Member
چه ربطی به امنیت داره !
چرا فکر میکنید بدون اجازه کاربر میشه عکس آپ لود کرد !
ببینید مثل فرم text میشه .
همونطور که مینویسید:
کد:
<input type="text" name="salam" value="salam">
و فیلد salam مقدار اولیه میگیره ، حالا برای فیلد از نوع file هم میخوایم مقدار اولیه داشته باشیم .
نهایتا که باید دکمه سابمیت رو کاربر کلیک کنه و اطلاعات ارسال شده (نوشته و یا عکس) روی سرور پردازش بشه ، پس هیچ مشکل امنیتی وجود نخواهد داشت.

ضمنا حدس میزنم توسط javascript و DOM بشه اینکار رو انجام داد.
 
ضعف امنیتی محسوب میشه چون شما می تونید به اون مقدار اولیه بدید مثلا ادرس یه فایل و بعد از طریق جاوا اسکریپت اون رو به صورت اتوماتیک submit کنید. این یعنی اینکه شما بدون اجازه کاربر فایل رو اپلود کردید
 

mazoolagh

Active Member
آقا شما که حرف ما (من و آقا محسن) رو قبول نداری - حداقل امتحانش کن!

یعنی با js بهش value بده ، ببین کار میکنه یا نه؟
 

NabiKAZ

Well-Known Member
ضعف امنیتی محسوب میشه چون شما می تونید به اون مقدار اولیه بدید مثلا ادرس یه فایل و بعد از طریق جاوا اسکریپت اون رو به صورت اتوماتیک submit کنید. این یعنی اینکه شما بدون اجازه کاربر فایل رو اپلود کردید

ببخشيد که دارم اينجا پست ميدم ، ميدونم تاپيک خيلي قديميه اما چون هنوز به جواب مشخص نرسيده با اجازه پاسخ ميدم.
راستش اين تاپيک از دستم در رفته بود.


عزیزم یکم بیشتر فکر کن ! اصلا ربطی به امنیت نداره !
شما میگید اگر میشد، یه مقدار اولیه میدادیم و با جاوا فرم رو ثابمیت میکردیم ! خب مگر الان در مورد فیلدهای از نوع text نمیشه همچین کاری کرد ؟ یه مقدار بدیم و با جاوا سابمیت کنیم ، اینکار هم باعث میشه مثلا یه رکورد به بانک اطلاعاتی اضافه بشه.
از نظر شما فرقی داره که توسط یه ربوط ، یه رکورد به دیتابیس اضافه بشه یا یه فایل آپ لود بشه؟
از طرف دیگه ، اگر روی سایتی فرمی وجود داشته باشه که شما اینکار رو در موردش اجرا کنید. مطمئناً اون فرم برای آپ لود فایل های شما ساخته شده ، پس فرقی نمیکنه که شما مقدار بهش بدید و سابمیت کنید ، یا اینکه جاوا اسکریپت یا یه ربوط یا هر شکل دیگه ای که مقدار دهی بشه و سابمیت بشه...
اگر هم فرمی برای این منظور وجود نداشته باشه ، شما هر چقدر هم یه فیلد از نوع فایل ، رو مقدار اولیه بدید و مخفیانه به همراه اطلاعات دیگر فرم به سرور ارسال کنید (سابمیت کنید) باز هم اتفاق خاصی رخ نخواهد داد، چون کد نوشته شده سمت سرور با فیلد از نوع فایل کاری ندارد و اون کار خودش رو با سایر فیلدها انجام میده.
نمیدونم تونستم مسئله امنیت رو براتون باز کنم ؟

تشکر
نبی
 

NabiKAZ

Well-Known Member
آقا شما که حرف ما (من و آقا محسن) رو قبول نداری - حداقل امتحانش کن!

یعنی با js بهش value بده ، ببین کار میکنه یا نه؟
بالا توضیح دادم که چرا قبول ندارم.

اگر دقیقاً میدونستم چطوری میشه مقدار داد که سوال نمیکردم :-d
اما تا اونجایی که زورم میرسید با js و dom سعی کردم موفق نشدم.

از پاسخ دوستان ممنونم.

نبی
 
با vb script میشه هارد رو جستجو کرد و به اون دسترسی پیدا کرد
اگه بشه به فیلد فایل مقدار پیشفرض داد ، میشه یه فایل با پسوند خواص رو بدون اجازه اپلود کرد

فرض می کنیم یه برنامه که حاوی اطلاعات مهم هست تمام اطلاعات خودشو توی یه فایل به صورت بانک داده هست میریزه
مثلا با پسوند *.db *.mdf یا فایل اکسس یا . .......
معمولا برنامه ها توی یه ادرس مشخصی نصب میشند، مثلا توی پوشه ی program files و در پوشه مخصوص خودشون ،مثل
E:\Program Files\Opera
اینجوری ما ادرس اون فایل رو پیدا می کنیم و با جاوا اسکریپت یا وی بی اسکریپت اون رو به فیلد فایل می دیم و اتوماتیک سابمیت می کنیم

بازم مثال بزنم؟

نمیدونم این حسن منه یا بدی من که فقط برای خراب کاری و کار های خلاف مغزم کار میکنه
 

bahy_my

Active Member
سلام.
الان نصف شبه من حالم خوش نیست نمی دونم دارم چی می نویسم :
کد:
<script>
function ddd(id){
	document.getElementById(id).focus;
	this.value='myvalue';
	alert(this.value);
}
</script>
<body>

<input type="file" id='f1' onClick="ddd('f1');">

</body>

باطناً نمی دونم یا ظاهراً که کار می کنه.
باید توی سرورساید امتحانش کرد تا دید چی میشه !
 
سلام.
الان نصف شبه من حالم خوش نیست نمی دونم دارم چی می نویسم :
کد:
<script>
function ddd(id){
	document.getElementById(id).focus;
	this.value='myvalue';
	alert(this.value);
}
</script>
<body>

<input type="file" id='f1' onClick="ddd('f1');">

</body>

باطناً نمی دونم یا ظاهراً که کار می کنه.
باید توی سرورساید امتحانش کرد تا دید چی میشه !


اینجوری امتحان کن
HTML:
<script>
function ddd(id){
	document.getElementById(id).focus;
	this.value='myvalue';
}
function m(){
alert(document.getElementById('f1').value);
}
</script>

<body>
<input type="file" id="f1" onclick="ddd('f1');" />
<input type="button" onclick="m();" value="show value" />

</body>
 

bahy_my

Active Member
می دونستم یه جای کار اشکال داره.
نمیشه با اینپوت hidden یه کارایی کرد ؟
 

NabiKAZ

Well-Known Member
سلام.
الان نصف شبه من حالم خوش نیست نمی دونم دارم چی می نویسم :
کد:
<script>
function ddd(id){
	document.getElementById(id).focus;
	this.value='myvalue';
	alert(this.value);
}
</script>
<body>

<input type="file" id='f1' onClick="ddd('f1');">

</body>

باطناً نمی دونم یا ظاهراً که کار می کنه.
باید توی سرورساید امتحانش کرد تا دید چی میشه !


البته کدت کار نمیکنه و مشخصه که اشتباس ، اما من متوجه منظورت شدم .
خیلی ساده تر میشه اینطور نوشت:
HTML:
 <input type="file" onClick="this.value='c:\\salam.txt';">
اما این کد کار نمیکنه.

اما در مورد نوع type=text جواب میده:
HTML:
 <input type="text" onClick="this.value='c:\\salam.txt';">

شاید بشه اینطور نتیجه گیری کرد که اصلاً متد value برای فیلدهای از نوع file پیشبینی نشده، یعنی اصلاً ساپورتش نمیکنه.

ضمنا سرورساید نه، کلاینت ساید، میزاریم پای حساب ناخوشیت
38.gif


همیشه سلامت باشی
نبی
 
آخرین ویرایش:

bahy_my

Active Member
سلام
:D
شاید بشه اینطور نتیجه گیری کرد که اصلاً متد value برای فیلدهای از نوع file پیشبینی نشده، یعنی اصلاً ساپورتش نمیکنه.
این که از اول مشخص بود.. منتها من فکر کردم شما دنبال یه راهی هستی که اینو دور بزنی.
اما باید یاد آور شد که اگه شما با دکمه browse یه مسیر بهش بدی اون وقت ساپورتش می کنه !!.. این از عجایب html هست.
ضمنا سرورساید نه، کلاینت ساید، میزاریم پای حساب ناخوشیت
قربونت, اما اینم کاملاً درسته : $_POST['file_inp'];
 

NabiKAZ

Well-Known Member
اینجوری امتحان کن
HTML:
<script>
function ddd(id){
	document.getElementById(id).focus;
	this.value='myvalue';
}
function m(){
alert(document.getElementById('f1').value);
}
</script>

<body>
<input type="file" id="f1" onclick="ddd('f1');" />
<input type="button" onclick="m();" value="show value" />

</body>

ببخشید قبل از اینکه اینو بخونم من پست بالا رو ارسال کرده بودم.
امتحان کردن این کد خیلی کمتر طول میکشه تا نوشتنش!
تست میکردی متوجه میشدی جواب نمیده. (شبیه کدیه که خیلی مختصر بالاتر نوشتم.)
البته مقدارش رو برمیگردونه که هدف نیست ، اما بهش مقداری نسبت نمیده.

تشکر
 

NabiKAZ

Well-Known Member
با vb script میشه هارد رو جستجو کرد و به اون دسترسی پیدا کرد
اگه بشه به فیلد فایل مقدار پیشفرض داد ، میشه یه فایل با پسوند خواص رو بدون اجازه اپلود کرد

فرض می کنیم یه برنامه که حاوی اطلاعات مهم هست تمام اطلاعات خودشو توی یه فایل به صورت بانک داده هست میریزه
مثلا با پسوند *.db *.mdf یا فایل اکسس یا . .......
معمولا برنامه ها توی یه ادرس مشخصی نصب میشند، مثلا توی پوشه ی program files و در پوشه مخصوص خودشون ،مثل
E:\Program Files\Opera
اینجوری ما ادرس اون فایل رو پیدا می کنیم و با جاوا اسکریپت یا وی بی اسکریپت اون رو به فیلد فایل می دیم و اتوماتیک سابمیت می کنیم

بازم مثال بزنم؟

نمیدونم این حسن منه یا بدی من که فقط برای خراب کاری و کار های خلاف مغزم کار میکنه

اگر منظورت این بوده.... پس حالا من یه سوال میپرسم. که شاید پرچم سفید رو بالا ببری !!!!
به نظر شما نمیشه با همون vbscript که ازش صحبت کردی، بجای خود فایل، محتویات اون فایل رو خوند و درون یه textarea ریخت و اونو submit کرد ؟! (کاری که پیش از این انجامش دادم)
آیا فرقی میکنه؟
هوووووم؟!
50.gif
 
اگر فایل شما حاوی متن معمولی باشه و برنامه یا چیز دیگه ای نباشه و تمام کاربران شما از اینترنت اکسپلورر استفاده کنند
بله میشه همچین کاری کرد

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

تسلیم :-?
اگه برای ویروس نویسی یا تروجان نویسی باشه بد نیست چون ممکنه از هر 2 نفر برای یکیشون بدون مشکل کار کنه

ولی نمی شه اینو به عنوان یه کار مطمئن به مشتری داد
 

NabiKAZ

Well-Known Member
اما باید یاد آور شد که اگه شما با دکمه browse یه مسیر بهش بدی اون وقت ساپورتش می کنه !!.. این از عجایب html هست.

منو به شک انداختی! راستی اگر ساپورت نمیکنه ، وقتی بروز زده میشه به خودش مقدار میگیره....

میشه اینطور برداشت کرد که وقتی ما بروز میزنیم و فایل رو انتخاب میکنیم و فیلد مقداری به خودش میگیره ، این پروسه توسط توابع داخلی کامپوننت فیلد file صورت میگیره. مسلماً کاربر به توابع داخلی اون کامپوننت دسترسی ندارد. پس نمیتونه مقداری set کنه. و تنها توابع مربوط به get کردن مقدار فیلد، public هست. اگر این نظریه درست باشه تقریبا این کار غیر ممکن میشه. ولی شاید از طریق handle آبجکت ها و برنامه نویسی پیچیده vbscript و البته نه javascript بشه کاری کرد.
در مورد جمله آخرم برای کسایی که آشنایی ندارند یه توضیح کوچیک میدم. ببینید به عنوان مثال پنجره یه برنامه و یا فیلدهای درون اون رو توسط هیچ تابع خارجی نمیشه مقادیرش رو عوض کرد، مثلاً title یه پنجره رو نمیشه عوض کرد... اما در مثلا vb با گرفتن handle فرم و child ها میشه به تکام اجزاء داخلی فرم دسترسی پیدا کرد و مثلا title فرم رو عوض کرد یا به فیلدهای داخل فرم مقادیری رو نسبت داد. از طرفی چون vbscript خیلی به vb نزدیکه و تقریباً همون توانایی ها رو داره ، ممکنه بشه بوسیله اون همون کاری رو که vb میکنه رو انجام داد و به نوعی به قول شما فیلد file رو دور زد.
البته اینکار مطمئناً ده ها خط کد نویسی نیاز داره.


موفق باشید.
 

NabiKAZ

Well-Known Member
اگر فایل شما حاوی متن معمولی باشه و برنامه یا چیز دیگه ای نباشه و تمام کاربران شما از اینترنت اکسپلورر استفاده کنند
بله میشه همچین کاری کرد

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

تسلیم :-?
اگه برای ویروس نویسی یا تروجان نویسی باشه بد نیست چون ممکنه از هر 2 نفر برای یکیشون بدون مشکل کار کنه

ولی نمی شه اینو به عنوان یه کار مطمئن به مشتری داد

اصلاً بحث من صحبت در مورد مزایا و معایب و کلاً بررسی و آنالیز این روش نبود.
شما و برخی دوستان روی بحث امنیت ، در مورد مقدار دهی اولیه فیلد از نوع file اصرار داشتید. و من هم سعی کردم متقاعدتون کنم که این مسئله به بحث امنیت مربوط نمیشه و همون کاری که با فیلد فایل میشه انجام داد، در مورد فیلد text هم میشه انجام داد و به عبارتی سطح امنیتی در هر صورت یکسانه.
که ظاهراً متقاعد هم شدید.

تشکر
نبی
 

جدیدترین ارسال ها

بالا