PDA

View Full Version : مقابله با sql injection در پروژه جاوا



MohseN16
پنج شنبه 05 بهمن 1391, 14:57 عصر
سلام ، چطوری داده هایی ک از کاربر میگیرم رو encode کنم در واقع برا مقابله با Sql injection میخوام اینکارو کنم مثلا username رو از کاربر گرفتم چجوری باید مطمئن بشم ک یک دستور Sql نیست ؟

dracula_killer
پنج شنبه 05 بهمن 1391, 17:06 عصر
من نمی دونم تحت وب هست برنامتون یا نه
ولی مثلا برای تحت وب من خودم با php می نویسم وقتی هر فیلدی رو از کاربر میگیرم اول بررسی می کنم درش special characters وجود داره یا نه؟
این خودش تا حدی جلوی sql enjection رو میگیره

phoenix87
پنج شنبه 05 بهمن 1391, 20:32 عصر
داده هایی که کاربر وارد فیلد می کنه باید محدود شه مثلا کاراکتر مساوی وارد نکنه.باید از regular expression استفاده کنی.

MohseN16
جمعه 06 بهمن 1391, 11:27 صبح
خب دستورای sql زیاد هستن یعنی باید برای همشون چک کنم اون داده ورودی رو ؟
میشه بیشتر توضیح بدین ، regular expression چیه؟

MohseN16
شنبه 07 بهمن 1391, 14:36 عصر
کسی نیس جوابه مارو بده؟

phoenix87
یک شنبه 08 بهمن 1391, 13:40 عصر
قرار نیست دستورات sql چک کنی.شما باید اول بدونی sql injection چه کار می کنه .باید نزاری کاربر هر داده ای رو وارد کنه.مثلا 1=1 که true برگردونه.

sadeghi.amin@live.com
چهارشنبه 11 بهمن 1391, 13:32 عصر
می تونی از hibernate framwork استفاده کنی

MohseN16
چهارشنبه 11 بهمن 1391, 21:25 عصر
"این پست برای کسایی هست ک ممکنه این سوال براشون پیش بیاد" :
اونطوری ک من از جست و جو ها فهمیدم ی کلاس هست به اسم Prepared Statement ک طبق گفته های این (http://stackoverflow.com/questions/6272861/how-to-prevent-sql-injection-in-jsp) لینک میتونه از این حملات جلوگیری کنه بصورت زیر:

String query = "SELECT * FROM users Where firstname=?";
reparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, firstname);
preparedStatement.executeQuery();
اگر مقدار firstname مثلا Mohsen باشه ، این کلاس عبارت 'Mohsen' رو داخل query قرار میده ، پس کاربر هر مقداری وارد کنه فرقی نداره!
اگه بازم جایی رو اشتباه فهمیدم یا دارم اشتبا میگم استادا راهنمایی کنن ، اگه هم نه ک هیچی!