Сигурен съм, че съм посочил списъка няколко пъти, въпреки че резултатът от търсенето с Google е пълен само с хора, които ви казват как да го направите:
- Това е
eval
eval
има естествени способности за лесно инжектиране, той е като не-PDO еквивалент на SQL, ако не изградите пълномащабна библиотека за избягване около него, това ще ви обърка. Използвайки тези функции, вие ефективно замествате по-безопасния роден език на MongoDB с нещо, което е също толкова несигурно, колкото всеки стар SQL.- Отнема глобално заключване и може да приеме заключване на запис и няма да се освободи, докато операцията не бъде извършена напълно, за разлика от други операции, които ще се освободят в определени случаи.
eval
работи само на първични и никога друг член на набора реплика- По принцип работи, без отметка, един тон JS в пакет V8/spidermonkey envo, който идва с MongoDB с пълна възможност за докосване на всяка част от вашата база данни и администраторски команди, това звучи ли безопасно?
- Това НЕ е MongoDB и не е "MongoDBs SQL", той работи в рамките на вградена JS среда, а не самият код на MongoDBs C++ (за разлика от рамката за агрегиране).
- Поради предишната точка е ИЗКЛЮЧИТЕЛНО бавен в сравнение с много други опции, това важи за
$where
употреба също.
Това би трябвало да е достатъчно, за да започнете на този фронт.