PDA

View Full Version : از چه فناوری تو w3schools به کار رفته



olampiad
شنبه 02 آذر 1392, 23:54 عصر
سلام
استاد واسه پایان ترممون یه چیزی شبیه به سابت w3schools خواسته.
لطفا به این صفحه بروید
http://w3schools.com/html/tryit.asp?filename=tryhtml_intro
تو اینجا از چه فناوری هایی استفاده شده؟
چه طور کاری کردن که کدی رو که تو ست چپ می نویسیم تو سمت راست به اجرا در میاد.
آیا تو این صفحه از از زبان های سمت سرور هم استفاده شده.
میشه یه توضیح مختصری در مورد ساختنش بگید
بی نهایت ممنون

diapason
یک شنبه 03 آذر 1392, 08:08 صبح
صد در صد سمت سرور است.
حالا اون که با asp نوشته شده.

ولی اگه از دید php بهش نگاه بشه، کار خاصی توش انجام نشده. یه کد بسیار ساده است. و میشه به صورت زیر تشریحش کرد.
در سمت چپ وقتی صفحه ارسال شد، عباراتی که وارد شده با تابع htmlentities امن می‌شن تا تگ‌ها در داخل کد سمت سرور بی‌اثر باشن، و دوباره بشه به همون صورت به کاربر نشون داده بشن.
در سمت راست، به کمک تابع strip_tags میشه تمام تگ‌ها رو حذف کرد، تا باز هم در سمت سرور اجرا نشن. البته تفاوتش در اینه که تگ‌ها در این حالت کاملاً حذف میشن از ورودی و نه اینکه مثل تابع بالا با اسکیپ کردن بی‌اثر بشن. البته این تابع پارامتر دومی که می‌گیره تگ‌های مجازی هستن که نمی‌خوایم حذف بشن. مثلاً در صفحه مورد نظر، تگ‌های <javacript> حذف میشن ولی تگ‌های HTML نه. مثلاً اگه کد زیر رو در اون وارد کنید (خودتون وارد کنید متوجه منظورم میشید):



<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>
<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>
<p>My first paragraph.</p>
<p> and my <p>
</body>
<scrip type="text/javascript">
alert('ha');
</script>
</html>


چیزی که در یافت می‌کنید اجرا شدۀ HTMLه که به طور طبیعی باید یه alert رو صفحه بیاد ولی چون تگ‌های جاوااسکریت حذف شدن فقط عبارت داخل تگ‌های مربوط به اون نمایش داده می‌شن.

SlowCode
یک شنبه 03 آذر 1392, 12:19 عصر
عباراتی که وارد شده با تابع htmlentities امن می‌شن تا تگ‌ها در داخل کد سمت سرور بی‌اثر باشن
این تابع واسه جلوگیری از حملات xss هست اونم وقتی که تو دیتابیس ذخیره میشه! اصلا ربطی به سمت سرور نداره که بخواهیم امنش کنیم.

این کار واسه کدهای html خیلی ساده است. کافیه یه textarea بزاری بعد با متد post به همون صفحه ارسالش کنی. بعد هرچی دریافت کردی با echo داخل textarea مقصد چاپش میکنی.

تو اون صفحه از کدهای php یا asp استفاده نشده بود ولی اگه قراره پروژه شما این زبان ها رو اجرا بکنه...
میتونی از تابع eval (http://php.net/manual/en/function.eval.php)پی اچ پی استفاده کنی. ولی ظاهرا این تابع خطرناک هست(منبع (http://stackoverflow.com/questions/951373/when-is-eval-evil-in-php))