PDA

View Full Version : کار با MongoDB در PHP



moosavimaleki
دوشنبه 26 بهمن 1394, 10:41 صبح
سلام

من میخواستم از MongoDB استفاده کنم که متوجه شدم ظاهرا براش دو تا درایور هست
http://php.net/manual/en/set.mongodb.php
http://php.net/manual/en/book.mongo.php


از اولی که سر در نیوردم و دومی رو فهمیدم چی به چیه
اینم مثالش:

http://www.tutorialspoint.com/mongodb/mongodb_php.htm


اما حالا توی بحث امنیتش موندم! اینکه Injection رخ نده

دوتا موردش رو پیدا کردم
اول اینکه باید از MongoCode (http://php.net/manual/en/class.mongocode.php) استفاده کنیم و بعد MongoDB::execute() (http://php.net/manual/en/mongodb.execute.php) که injection رخ نده
اما خب با این حال گفته شده بازم از برخی کار ها رو نکنید!



Using scope helps prevent malicious input from being executed by the database. However, you must make sure that your code does not turn around and execute the input anyway! For example, never use the JavaScript eval function on user input:



این دلیلش بود
اینم مثالش:


<?php

// don't do this!

// $jsShellInput is "db.users.drop();"

$scope = array("input" => $jsShellInput);
$db->execute(new MongoCode("eval(input);", $scope));

?>





نکته ی دوم اینه که از ورود آرایه در $_GET و $_POST مطمئن بشید چون در MongoDB != را به صورت یه آرایه باید به درایور بدیم و ممکنه کاربر خودش اونو جعل کنه....


<?php
$collection->find(array("username" => $_GET['username']));

//http://www.example.com?username[$ne]=foo

$collection->find(array("username" => array('$ne' => "foo")));
؟>







کسی نکات امنیتی بیشتری ازش میدونه؟

مبین رنجبر
دوشنبه 26 بهمن 1394, 16:22 عصر
به عقیده من درصد بسیاری از این نکات امنیتی مربوط به خود PHP هست و باید توسط خود برنامه نویس ایجاد شود. دقیقا مثل زمانی هست که شما در استفاده از MySQL فیلدهای جستجو را مستقیما در تولید کوئری موردنظر استفاده کنید و یا اینکه از SQL Injection جلوگیری کنید و سپس به MySQL بفرستید. نمیشود گفت که MySQL امنیت برنامه رو تامین نمیکنه. هیچ برنامه ای وظیفه تامین امنیت برنامه های بیرونی که دسترسی به سرور دیتابیس دارند را ندارد و حتما باید توسط یک لایه امنیتی این سطح امنیت تامین شود.

ولی مانگو دی بی در سطح خود سرور امنیت بخش خودش را تامین می کند. به طور مثال به شما اجازه می دهد که پورت سرور را به دلخواه انتخاب کنید تا کسانی که میخواهند به سرور حمله کنند با پورت استانداردی که در داکیومنت های آموزش ها پیدا می شود روبرو نشوند.