بازگشت   پی سی سیتی > کامپیوتر اینترنت و شبکه Computer internet > زبان های برنامه نویسی Programming

زبان های برنامه نویسی Programming بحث در مورد زبانهای مختلف برنامه نویسی

 
 
ابزارهای موضوع نحوه نمایش
Prev پست قبلی   پست بعدی Next
  #38  
قدیمی 01-28-2012
دانه کولانه آواتار ها
دانه کولانه دانه کولانه آنلاین نیست.
    مدیر کل سایت
        
کوروش نعلینی
 
تاریخ عضویت: Jun 2007
محل سکونت: کرمانشاه
نوشته ها: 12,700
سپاسها: : 1,382

7,486 سپاس در 1,899 نوشته ایشان در یکماه اخیر
دانه کولانه به Yahoo ارسال پیام
پیش فرض عدم استفاده از gets() در C++ سر ریزی بافر و مشکلات امنیتی

خدا چه میگی مهرگان سوالت مگه ای نیست که چجو از gets استفاده بکنی ؟

gets با cin.get خو فرق مکنه .

gets اصلا دیگه cin نمیخواد
تو الان سوالت چیه ؟

خو هر چی که میخوای با gets بگیر


کد:
#include <stdio.h> البته وقتی نیم اسپیس استاندارد رو یوز میکنی فکر کنم اینو نیاز نداره دیگه 

int main()
{
  char string [256];
  printf ("Insert your full address: ");
  gets (string);
  printf ("Your address is: %s\n",string);
  return 0
{
منتهی مشکل تکنیکی ای که وجود داره اینه که برنامه نویسها میگن از gets استفاده نکنین چون میتونه بافر اور فلو رخ بده و از این راه هکر ها خیلی سواستفاده میکنند

Function is intrinsically unsafe and should not be used
نقل قول:


Replace gets() with a C++ stream method that has a limit on the number of characters that will be read into the buffer (cin.getline(buffer, bufSize), for example).

If "buf" is a static buffer locally defined, bufSize can be replaced by sizeof(buffer). If malloc'd, use the malloc size.
Examples of Incorrect Code
کد:
 char str1[10];
gets(str1); 
    /* If the string is more than 10 characters, the overflow will spill over into the adjoining memory. */ 

راه درستش
کد:
 char str1[10];
fgets(str1, sizeof(str1), stdin); 
    /* Will not overflow.
Note that if buffer is malloc'd, sizeof() will not work and the malloc size should be used. */
/* In C++, use of iostream::getline() is preferred. */
__________________
مرا سر نهان گر شود زير سنگ -- از آن به كه نامم بر آيد به ننگ
به نام نكو گر بميــرم رواست -- مرا نام بايد كه تن مرگ راست




ویرایش توسط دانه کولانه : 01-28-2012 در ساعت 12:51 AM
پاسخ با نقل قول
کاربران زیر از دانه کولانه به خاطر پست مفیدش تشکر کرده اند :
 


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 

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

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
اچ تی ام ال غیر فعال می باشد



اکنون ساعت 04:32 AM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد.



Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)


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




  پیدا کردن مطالب قبلی سایت توسط گوگل برای جلوگیری از ارسال تکراری آنها