moosavimaleki
دوشنبه 26 بهمن 1394, 11: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")));
؟>
کسی نکات امنیتی بیشتری ازش میدونه؟
من میخواستم از 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")));
؟>
کسی نکات امنیتی بیشتری ازش میدونه؟