Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
NoSQL×¢ÈëµÄ·ÖÎöºÍ»º½â
 
×÷ÕߣºAviv Ron Alexandra-Shulman-Peleg Anton Puzanov À´Ô´£ºÍøÂç ·¢²¼ÓÚ£º 2017-5-25
  4107  次浏览      29
 

±¾ÎÄÒªµã£º

Á˽âÕë¶ÔNoSQLµÄÐµİ²È«Â©¶´

ÎåÀàNoSQL¹¥»÷ÊֶΣ¬±ÈÈçÖØÑÔʽ¡¢ÁªºÏ²éѯ¡¢JavaScript ×¢Èë¡¢±³¸ºÊ½²éѯ£¨Piggybacked queries£©£¬ÒÔ¼°¿çÓòÎ¥¹æ

OWASP×éÖ¯Õë¶Ô¼ì²éNoSQL×¢Èë´úÂëµÄ½¨Òé

Á˽âÈçºÎ»º½â°²È«·çÏÕ

ÈçºÎÔÚÕû¸öÈí¼þ¿ª·¢ÖÜÆÚÖÐÕûºÏNoSQLÊý¾Ý¿â©¶´µÄ¹ÜÀí

±¾ÆªÎÄÕÂÒѾ­ÔÚIEEE Software ÔÓÖ¾ÉÏÊ×·¢¡£IEEE Software ¾Í½ñÌìµÄÕ½ÂÔÐÔ¼¼ÊõÎÊÌâÌṩÁ˿ɿ¿µÄ¡¢¾­×¨¼ÒÆÀÉó¹ýµÄÐÅÏ¢¡£IT¹ÜÀíÕߺͼ¼ÊõÁìµ¼Ó¦ÒÀ¿¿ÐÂÏȽø½â¾ö·½°¸µÄITרҵÈËÔ±£¬ÒÔÓ­½ÓÔËÐпɿ¿µÄ¡¢Áé»îµÄÆóÒµÕâÒ»ÌôÕ½¡£

NoSQL£¨²»½ö½öÊÇNoSQL£©Êý¾Ý´æ´¢ÏµÍ³ÒѾ­·Ç³£Á÷ÐУ¬ÒòΪËüÃÇÒ×À©Õ¹ÇÒÒ×ÓÚʹÓ᣾¡¹ÜNoSQLÊý¾Ý´æ´¢µÄеÄÊý¾ÝÄ£ÐͺͲéѯ¸ñʽÁîÔ­À´µÄ¹¥»÷²»ÔÙÓÐЧÁË£¬µ«¹¥»÷ÕßÈ´¿ÉÒÔѰÕÒÐÂµÄÆõ»ú²åÈë¶ñÒâ´úÂë¡£

Êý¾Ý¿â°²È«ÊÇÐÅÏ¢°²È«µÄÒ»¸öÖØÒªÄÚÈÝ¡£·ÃÎÊÆóÒµÊý¾Ý¿âÊÚȨ¹¥»÷ÕßÄܹ»³ä·Ö¿ØÖƹؼüÐÔÊý¾Ý¡£ÀýÈ磬SQL×¢Èë¹¥»÷°Ñ¶ñÒâ´úÂë²åÈëµ½Ó¦ÓÃÏòÊý¾Ý¿â²ã·¢Ë͵ÄÓï¾äÖС£Õâʹ¹¥»÷Õß¼¸ºõÄܶÔÊý¾Ý×öÈκβÙ×÷£¬°üÀ¨·ÃÎÊδÊÚȨµÄÊý¾Ý£¬ÒÔ¼°Ð޸ġ¢É¾³ýºÍ²åÈëÊý¾Ý¡£¾¡¹ÜÓÉÓÚ¿ò¼Ü¸ü°²È«¡¢ÈËÃÇÒâʶ¸üÇ¿£¬SQL×¢ÈëÕâÖÖÊֶεÄÀûÓÃÂʽü¼¸ÄêÀ´ÒѾ­ÎȲ½Ï½µ£¬µ«ËüÈÔÈ»ÊǸö¸ßΣµÄϵͳ©¶´¡£ÀýÈ磬WebÓ¦ÓÃÿÔÂÊܵ½ËĴλò¸ü¶à´ÎWeb¹¥»÷»î¶¯£¬¶øSQL×¢ÈëÈÔÈ»Êǹ¥»÷ÁãÊÛÉÌ×îÁ÷Ðеķ½Ê½1¡£´ËÍ⣬SQL×¢Èë©¶´¶Ô32%µÄWebÓ¦Óö¼ÓÐÓ°Ïì¡£

NoSQL£¨²»½ö½öÊÇSQL£©ÊÇÊý¾Ý´æ´¢µÄÒ»¸öÁ÷ÐÐÇ÷ÊÆ£»Ëü·ºÖ¸ÒÀÀµÓÚ²»Í¬´æ´¢»úÖÆµÄ·Ç¹ØÏµÐÍÊý¾Ý¿â£¬ÕâЩ´æ´¢»úÖÆ°üÀ¨Îĵµ´æ´¢¡¢¼üÖµ¶Ô´æ´¢ºÍͼ¡£ÕâЩÊý¾Ý¿âµÄ¹ã·ºÓ¦ÓÃÊÇÓÉÏÖ´ú´óÐÍÓ¦ÓÃÍÆ¶¯ÆðÀ´µÄ£¬±ÈÈçFacebook¡¢AmazonºÍTwitter£¬ËüÃÇÐèÒª°ÑÊý¾Ý·Ö²¼µ½Ðí¶àµÄ·þÎñÆ÷ÉÏ¡£´«Í³¹ØÏµÐÍÊý¾Ý¿â²»Âú×ãÕâÖÖÀ©Õ¹ÐÔÐèÇó£¬ËüÃÇÐèÒªÒ»¸öµ¥¶ÀµÄÊý¾Ý¿â½ÚµãÈ¥Ö´ÐÐͬһÊÂÎñµÄËùÓвÙ×÷¡£

ÓÚÊÇ£¬·¢Õ¹³öÒ»Åú·Ö²¼Ê½µÄ¡¢NoSQL¼üÖµ¶Ô´æ´¢À´Âú×ãÕâЩ´óÐÍÓ¦ÓõÄÀ©Õ¹ÐÔÐèÇó¡£ÕâЩÊý¾Ý´æ´¢°üÀ¨ÏñMongoDBºÍCassandraÖ®ÀàµÄNoSQLÊý¾Ý¿â£¬Ò²ÓÐÏñRedisºÍMemcachedÕâÑùµÄÄÚ´æºÍ»º´æ´æ´¢¡£È·Êµ£¬NoSQLµÄÊÜ»¶Ó­³Ì¶ÈÔÚ¹ýÈ¥¼¸ÄêÀ´Ò»Ö±ÔÚÎȶ¨ÉÏÉý£¬ÆäÖÐMongoDBÔÚ10¸ö×îÁ÷ÐеÄÊý¾Ý¿âÖÐÅŵ½Á˵ÚËÄ룬Èçͼ1Ëùʾ¡£

ͼ1 db-engines.com 2015Äê8ÔÂÁ÷ÐжÈÅÅÃûÖÐǰʮ¸ö×îÊÜ»¶Ó­µÄÊý¾Ý¿â¡£ÆäÖÐNoSQLÊý¾Ý¿âÓÐMongoDB¡¢CassandraºÍRedis¡£ÕâÈý¿îµÄÊÜ»¶Ó­³Ì¶ÈÈÔÔÚÉÏÉý¡£

ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«·ÖÎöNoSQLµÄÍþвºÍ¼¼Êõ£¬ÒÔ¼°ËüÃǵĻº½â»úÖÆ¡£

NoSQL ©¶´

¼¸ºõ¾ÍÏñÿÖÖм¼ÊõÒ»Ñù£¬NoSQLÊý¾Ý¿âÔÚ¸Õ³öÏÖʱ»¹²»¹»°²È«3¨C5¡£ËüÃǵ±³õȱ·¦¼ÓÃÜ¡¢Êʵ±µÄÈÏÖ¤¡¢½ÇÉ«¹ÜÀíºÍϸÁ£¶ÈµÄÊÚȨµÈ6¡£´ËÍ⣬ËüÃÇ»¹»á³öÏÖΣÏյķçÏÕ±©Â¶ºÍ¾Ü¾ø·þÎñ¹¥»÷3¡£Èç½ñ£¬Çé¿öÒѾ­ºÃתÁË£¬Á÷ÐеÄÊý¾Ý¿âÒѾ­ÒýÈëÁËÄÚÖõı£»¤»úÖÆ7¡£

NoSQLÊý¾Ý¿âʹÓò»Í¬µÄ²éѯÓïÑÔ£¬Õâʹ´«Í³µÄSQL×¢Èë¼¼ÊõÒѾ­ÎÞЧÁË¡£µ«ÕâÊÇ·ñÒâζ×ÅNoSQLϵͳ¶Ô×¢ÈëÃâÒßÄØ£¿ÎÒÃǵÄÑо¿±íÃ÷£¬¾¡¹ÜÕâ¸ö²éѯÓïÑÔ¼°ÆäÇý¶¯µÄ°²È«ÐÔÒѾ­´óÐÍÌáÉý£¬µ«ÈÔÈ»´æÔÚ×Å×¢Èë¶ñÒâ²éѯµÄÊֶΡ£ÒѾ­ÓÐÈËÕûÀí³öÁËNoSQL×¢Èë¼¼ÊõµÄÁбí1,3,4¡£ÓÐЩ³õ²½Ó¦ÓÃɨÃèÏîÄ¿ÒѾ­Ó¿ÏÖ³öÀ´ÁË£¨ÀýÈçnosqlproject.com£©£¬¶øÇÒ¿ª·ÅʽWebÓ¦ÓóÌÐò°²È«ÏîÄ¿£¨OWASP£¬Open Web Application Security Project£©ÒѾ­¹«²¼Á˼ì²éNoSQL×¢Èë´úÂëµÄ½¨Ò顣Ȼ¶ø£¬ÕâЩ»¹½ö½öÊdzõ²½³É¹û£¬ÕâЩÎÊÌâÉÐδµÃµ½³ä·ÖµÄÑо¿£¬²¢ÇÒδµÃµ½Ó¦ÓеĹØ×¢¡£

NoSQL¹¥»÷;¾¶

WebÓ¦ÓúͷþÎñͨ³£Ê¹ÓÃNoSQLÊý¾Ý¿âÈ¥±£´æ¿Í»§Êý¾Ý¡£Í¼2չʾÁËÒ»¸öµäÐ͵ļܹ¹£¬ÔÚ´ËNoSQLÓÃÓÚ±£´æÍ¨¹ýWebÓ¦ÓÃÀ´´æÈ¡µÄÊý¾Ý¡£Í¨¹ýÒ»¸öÇý¶¯³ÌÐòÀ´½øÐÐÕâ¸öÊý¾Ý¿âµÄ·ÃÎÊ£¬¼´Ò»¸ö´æÈ¡Ð­Òé°ü×°Æ÷£¬ËüΪ¶àÖÖ±à³ÌÓïÑÔ±àдµÄÊý¾Ý¿â¿Í»§¶ËÌṩÀà¿â¡£¾¡¹Ü¸ÃÇý¶¯³ÌÐò×ÔÉí¿ÉÄܲ»Ò×Êܵ½¹¥»÷£¬µ«ÓÐʱËüÃÇÌṩÁ˲»°²È«µÄAPI£¬µ±Ó¦Óÿª·¢ÈËÔ±´íÎóµØÊ¹ÓÃËüÃÇʱ£¬¾Í»á¸ø¸ÃÓ¦ÓÃÒýÈë©¶´ÁË£¬ÕâЩ©¶´»á±»ÈËÀûÓöÔÊý¾Ý¿â½øÐÐÈÎÒâ²Ù×÷¡£Èçͼ2Ëùʾ£¬¹¥»÷Õß¿ÉÒÔαÔìÒ»¸ö´øÓÐ×¢Èë´úÂëµÄWeb·ÃÎÊÇëÇ󣬵±Êý¾Ý¿â¿Í»§¶Ë»òЭÒé°ü×°Æ÷½øÐд¦Àíʱ£¬½«»áÖ´ÐÐÔ¤ÆÚµÄ·Ç·¨Êý¾Ý¿â²Ù×÷¡£

ͼ2 µäÐÍWebÓ¦Óüܹ¹¡£NoSQLÓÃÓÚ±£´æÍ¨¹ýWebÓ¦ÓÃÀ´´æÈ¡µÄÊý¾Ý¡£Í¨¹ýÒ»¸öÇý¶¯³ÌÐòÀ´½øÐÐÕâ¸öÊý¾Ý¿âµÄ·ÃÎÊ£¬¼´Ò»¸ö´æÈ¡Ð­Òé°ü×°Æ÷£¬ËüΪ¶àÖÖ±à³ÌÓïÑÔ±àдµÄÊý¾Ý¿â¿Í»§¶ËÌṩÀà¿â¡£¾¡¹Ü¸ÃÇý¶¯³ÌÐò×ÔÉí¿ÉÄܲ»Ò×Êܵ½¹¥»÷£¬µ«ÓÐʱËüÃÇÌṩÁ˲»°²È«µÄAPI£¬µ±Ó¦Óÿª·¢ÈËÔ±´íÎóµØÊ¹ÓÃËüÃÇʱ£¬¾Í»á¸ø¸ÃÓ¦ÓÃÒýÈë©¶´ÁË¡£

NoSQLÏà¹ØµÄSQL¹¥»÷Ö÷Òª»úÖÆ¿ÉÒÔ´óÖ·ÖΪÒÔÏÂÎåÀࣺ

ÖØÑÔʽ¡£ÓÖ³ÆÎªÓÀÕæÊ½¡£´ËÀ๥»÷ÊÇÔÚÌõ¼þÓï¾äÖÐ×¢Èë´úÂ룬ʹÉú³ÉµÄ±í´ïʽÅж¨½á¹ûÓÀÔ¶ÎªÕæ£¬´Ó¶øÈƹýÈÏÖ¤»ò·ÃÎÊ»úÖÆ¡£ÀýÈ磬ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Õ¹Ê¾¹¥»÷ÕßÈçºÎÓÃ$ne²Ù×÷£¨²»ÏàµÈ£©µÄÓï·¨ÈÃËûÃÇÎÞÐèÏàÓ¦µÄƾ֤¼´¿É·Ç·¨½øÈëϵͳ¡£

ÁªºÏ²éѯ¡£ÁªºÏ²éѯÊÇÒ»ÖÖÖÚËùÖÜÖªµÄSQL×¢Èë¼¼Êõ£¬¹¥»÷ÕßÀûÓÃÒ»¸ö´àÈõµÄ²ÎÊýÈ¥¸Ä±ä¸ø¶¨²éѯ·µ»ØµÄÊý¾Ý¼¯¡£ÁªºÏ²éѯ×î³£ÓõÄÓ÷¨ÊÇÈÆ¹ýÈÏÖ¤Ò³Ãæ»ñÈ¡Êý¾Ý¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Õ¹Ê¾Ò»¸ö¹¥»÷ʾÀý£¬Ëü½«Í¨¹ýÔö¼ÓÓÀÕæµÄ±í´ïʽÀûÓò¼¶ûORÔËËã·û½øÐй¥»÷£¬´Ó¶øµ¼ÖÂÕû¸öÓï¾äÅж¨³ö´í£¬½øÐзǷ¨µÄÊý¾Ý»ñÈ¡¡£

JavaScript×¢Èë¡£ÕâÊÇÒ»ÖÖеĩ¶´£¬ÓÉÔÊÐíÖ´ÐÐÊý¾ÝÄÚÈÝÖÐJavaScriptµÄNoSQLÊý¾Ý¿âÒýÈëµÄ¡£JavaScriptʹÔÚÊý¾ÝÒýÇæ½øÐи´ÔÓÊÂÎñºÍ²éѯ³ÉΪ¿ÉÄÜ¡£´«µÝ²»¸É¾»µÄÓû§ÊäÈëµ½ÕâЩ²éѯÖпÉÒÔ×¢ÈëÈÎÒâJavaScript´úÂ룬Õâ»áµ¼Ö·Ƿ¨µÄÊý¾Ý»ñÈ¡»ò´Û¸Ä¡£

±³¸ºÊ½²éѯ¡£ÔÚ±³¸ºÊ½²éѯÖУ¬¹¥»÷Õßͨ¹ýÀûÓÃתÒåÌØ¶¨×Ö·û£¨±ÈÈçÏñ»Ø³µºÍ»»ÐÐÖ®ÀàµÄ½áÊø·û£©²åÈëÓÉÊý¾Ý¿â¶îÍâÖ´ÐеIJéѯ£¬ÕâÑù¾Í¿ÉÒÔÖ´ÐÐÈÎÒâ´úÂëÁË¡£

¿çÓòÎ¥¹æ¡£HTTP REST APIsÊÇNoSQLÊý¾Ý¿âÖеÄÒ»¸öÁ÷ÐÐÄ£¿é£¬È»¶ø£¬ËüÃÇÒýÈëÁËÒ»Ààеĩ¶´£¬ËüÉõÖÁÄÜÈù¥»÷Õß´ÓÆäËûÓò¹¥»÷Êý¾Ý¿â¡£ÔÚ¿çÓò¹¥»÷ÖУ¬¹¥»÷ÕßÀûÓúϷ¨Óû§ºÍËûÃǵÄÍøÒ³ä¯ÀÀÆ÷Ö´ÐÐÓк¦µÄ²Ù×÷¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Õ¹Ê¾´ËÀà¿çÕ¾ÇëÇóαÔ죨CSRF£©¹¥»÷ÐÎʽµÄÎ¥¹æÐÐΪ£¬ÔÚ´ËÍøÕ¾ÐÅÈεÄÓû§ä¯ÀÀÆ÷½«±»ÀûÓÃÔÚNoSQLÊý¾Ý¿âÉÏÖ´ÐзǷ¨²Ù×÷¡£Í¨¹ý°ÑHTML¸ñʽµÄ´úÂë×¢Èëµ½ÓЩ¶´µÄÍøÕ¾»òÕßÆÛÆ­Óû§½øÈëµ½¹¥»÷Õß×Ô¼ºµÄÍøÕ¾ÉÏ£¬¹¥»÷Õß¿ÉÒÔÔÚÄ¿±êÊý¾Ý¿âÉÏÖ´ÐÐpost¶¯×÷£¬´Ó¶øÆÆ»µÊý¾Ý¿â¡£

JSON²éѯÒÔ¼°Êý¾Ý¸ñʽ

¾¡¹ÜÏà¶Ô°²È«£¬µ«Á÷ÐеÄJSON±íÊö¸ñʽÈÔ¿ÉÊܵ½ÐÂÀàÐ͵Ä×¢Èë¹¥»÷¡£ÎÒÃǽ«¾ÙÀý˵Ã÷MongoDBÖеĴËÀ๥»÷£¬MongoDBÊÇÒ»¸öÃæÏòÎĵµµÄÊý¾Ý¿â£¬ÒѾ­Óжà¸ö´óÐ͹©Ó¦ÉÌÓèÒÔ²ÉÓã¬ÆäÖаüÀ¨eBay¡¢FoursquareºÍLinkedIn¡£

ÔÚMongoDBÖУ¬²éѯºÍÊý¾ÝÒÔJSON¸ñʽÃèÊö£¬ÕâÔÚ°²È«·½ÃæÒªÓÅÓÚSQL£¬ÒòΪËüÊǸü³ä·Ö¶¨ÒåµÄ£¬ÈÝÒ×½øÐмÓÃܺͽâÃÜ£¬¶øÇÒÔÚÿÖÖ±à³ÌÓïÑÔÖж¼Óв»´íµÄÔ­ÉúʵÏÖ¡£ÏñSQL×¢ÈëÄÇÑù¶Ô²éѯ½á¹¹µÄÆÆ»µ£¬ÔÚJSON½á¹¹µÄ²éѯÖлá¸üÄÑʵÏÖ¡£ÔÚMongoDBÖг£¼ûµÄ²åÈëÓï¾äÓ¦¸ÃÊÇÕâÑùµÄ£º

db.books.insert({ title: ¡®The Hobbit¡¯ , author: ¡®J.R.R. Tolkien¡¯ })

Õâ»á²åÈëÒ»¸öеÄÎĵµµ½booksµÄ¼¯ºÏÖУ¬Ëü¾ßÓÐtitle£¨±êÌ⣩ºÍauthor£¨×÷Õߣ©×ֶΡ£³£¼ûµÄ²éѯÌõ¼þÓ¦¸ÃÊÇÕâÑùµÄ£º

db.books.find({ title: ¡®The Hobbit¡¯ })

³ýÏÞÖÆÒª²éѯµÄ×Ö¶ÎÖ®Í⣬²éѯÖл¹¿ÉÒÔ°üÀ¨ÕýÔò±í´ïʽºÍÌõ¼þ¡£

PHPÖØÑÔʽעÈë

ÈÃÎÒÃÇÉóÊÓÒ»ÏÂͼ3ÖÐËù»­µÄ¼Ü¹¹£¬Ò»¸öʹÓÃPHPʵÏÖºó¶ËµÄWebÓ¦Óã¬Ëü½«ÓÃÓÚ²éѯÊý¾Ý´æ´¢µÄÇëÇó±àÂëΪJSON¸ñʽ¡£ÈÃÎÒÃÇʹÓÃÒ»¸öMongoDBʾÀýÈ¥ÑÝʾÊý×é×¢Èë©¶´°É£¬´Ó¼¼ÊõºÍ½á¹ûÉÏÀ´¿´ÕâÊÇÒ»¸öÓëSQL×¢ÈëÓÐЩÀàËÆµÄ¹¥»÷ÊֶΡ£

ͼ3 ʹÓÃMongoDBµÄPHPÓ¦Óá£Ò»¸öʹÓÃPHPʵÏÖºó¶ËµÄWebÓ¦Óã¬Ëü°ÑÓÃÓÚ²éѯÊý¾Ý´æ´¢µÄÇëÇó±àÂëΪJSON¸ñʽ¡£

PHP±àÂëÊý×éΪԭÉúJSON¡£àÅ£¬Êý×éʾÀýÈçÏ£º

array(¡®title¡¯ => ¡®The Hobbit¡¯ , ¡®author¡¯ => ¡®J.R.R. Tolkien¡¯);

½«ÓÉPHP±àÂëΪÒÔÏÂJSON¸ñʽ£º

db.books.find({ title: ¡®The Hobbit¡¯ })

Èç¹ûÒ»¸öPHP¾ßÓеǼ»úÖÆ£¬ÓÉÓû§ä¯ÀÀÆ÷ͨ¹ýHTTP POST£¨ËüÏñHTTP GETÒ»ÑùÈÝÒ×Êܵ½¹¥»÷£©·¢Ë͹ýÀ´Óû§ºÍÃÜÂ룬³£¼ûµÄPOST URL±àÂëÓ¦¸ÃÊÇÕâÑùµÄ£º

username=Tolkien&password = hobbit

ºó¶ËPHP´úÂëÕë¶Ô¸ÃÓû§¶ÔËü½øÐд¦Àí²¢²éѯMongoDB£¬ÈçÏÂËùʾ£º

db->logins->find(array(¡°username¡±=>$_ POST[¡°username¡±], ¡°password¡±=>$_POST[¡°password¡±]));

Õâ±¾ÉíºÏÇéºÏÀíûʲôÎÊÌ⣬ֱ¾õÉÏ¿ª·¢ÈËÔ±¿ÉÄÜϲ»¶ÓÃÒÔϲéѯ£º

db.logins.find({ username: ¡®tolkien¡¯, password: ¡®hobbit¡¯})

È»¶ø£¬PHPÕë¶Ô¹ØÁªÊý×éÓиöÄÚÖõĻúÖÆ£¬ÕâÈù¥»÷ÕßÓлú¿É³Ë£¬¿É·¢ËÍÒÔ϶ñÒâµÄÊý¾Ý£º

username[$ne]=1&password[$ne]=1

PHP»á°Ñ¸ÃÊäÈë½âÎöΪ£º

array(¡°username¡± => array(¡°$[ne] ¡° => 1), ¡° password¡± => array(¡°$ne¡± => 1));,

Ëü»á±àÂëΪÈçÏÂMongoDB²éѯ£º

db.logins.find ({ username: {$ne:1 }, password {$ne: 1 })

ÒòΪ$neÊÇMongoDBÓÃÀ´Åж¨Ìõ¼þÊÇ·ñ²»ÏàµÈµÄ£¬ËùÒÔËü»á²éѯµÇ¼¼¯ºÏÖеÄËùÓÐÓû§Ãû³Æ²»µÈÓÚ1ÇÒÃÜÂëÒ²²»µÈÓÚ1µÄ¼Ç¼¡£Òò´Ë£¬±¾´Î²éѯ½«·µ»ØµÇ¼¼¯ºÏÖеÄËùÓÐÓû§¡£»»³ÉSQLµÄ±íÊö·¨£¬¾ÍµÈͬÓÚÒÔϲéѯÓï¾ä£º

SELECT * FROM logins WHERE username <> 1 AND password <> 1

ÔÚÕâÖÖÇé¿öÏ£¬Â©¶´¾ÍΪ¹¥»÷ÕßÌṩÁËÒ»¸ö²»±ØÓÐЧƾ֤¼´¿ÉµÇ¼ӦÓõķ½Ê½¡£ÔÚÆäËû±äÌåÖУ¬¸Ã©¶´¿ÉÄܻᵼÖ·Ƿ¨Êý¾Ý·ÃÎÊ»òÓÉÎÞÌØÈ¨µÄÓû§Ö´ÐÐÌØÈ¨²Ù×÷¡£Îª»º½âÕâ¸öÎÊÌ⣬ÎÒÃÇÐèҪת»»´ÓÐèÇóÖнÓÊյIJÎÊýΪÊʵ±ÀàÐÍ£¬ÔÚ±¾ÀýÖУ¬¿ÉʹÓÃ×Ö·û´®£¬ÈçÏÂËùʾ£º

db->logins->find( array(¡°username¡±=>(string)$_ POST[¡°username¡±], ¡°password¡±=>(string)$_ POST[¡°password¡±]));

NoSQLÁªºÏ²éѯעÈë

SQL×¢Èë©¶´¾­³£ÊÇÓÉÓÚδ¶ÔÓû§ÊäÈë½øÐÐÊʵ±±àÂë¶øÖ±½ÓÆ´½Ó²éѯÔì³ÉµÄ¡£ÔÚMongoDBÖ®ÀàµÄÁ÷ÐÐÊý¾Ý´æ´¢ÖУ¬JSON²éѯ½á¹¹Ê¹¹¥»÷±äµÃ¸üÄÑÁË¡£È»¶ø£¬Õâ²¢²»´ú±í²»¿ÉÄÜ¡£

ÈÃÎÒÃÇ¿´Ò»¸öͨ¹ýHTTP POST·¢ËÍÓû§ÃûºÍÃÜÂë²ÎÊýµ½ºó¶ËµÄµÇ¼±íµ¥£¬Ëüͨ¹ýÆ´½Ó×Ö·û´®µÄ·½Ê½µÃµ½²éѯÓï¾ä¡£ÀýÈ磬¿ª·¢ÈËÔ±¿ÉÄÜ»áÕâô×ö£º

string query = ¡°{ username: ¡®¡± + post_ username + ¡°¡¯, password: ¡®¡± + post_passport + ¡® ¡° }¡±

¾ßÓÐÓÐЧÊäÈëʱ£¬µÃµ½µÄ²éѯÓï¾äÊÇÓ¦¸ÃÕâÑùµÄ£º

{ username: ¡®tolkien¡¯, password: ¡®hobbit¡¯ }

µ«¾ßÓжñÒâÊäÈëʱ£¬Õâ¸ö²éѯÓï¾ä»á±»×ª»»ÎªºöÂÔÃÜÂëµÄ£¬ÔÚÎÞÐèÃÜÂëµÄÇé¿öϵǼÓû§Õ˺š£¶ñÒâÊäÈëʾÀýÈçÏ£º

username=tolkien¡¯, $or: [ {}, {¡®a¡¯: ¡®a&password=¡¯ }],
$comment: ¡®successful MongoDB injection¡¯

¸ÃÊäÈë»á±»¹¹½¨µ½¸Ã²éѯÖУº

{ username: ¡®tolkien¡¯, $or: [ {}, { ¡®a¡¯: ¡®a¡¯, password ¡®¡¯ } ], $comment: ¡®successful MongoDB injection¡¯ }

Ö»ÒªÓû§ÃûÊÇÕýÈ·µÄ£¬Õâ¸ö²éѯ¾Í¿ÉÒԳɹ¦¡£×ª»»³ÉSQLµÄ±íÊö£¬Õâ¸ö²éѯÀàËÆÓÚÒÔÏÂÓï¾ä£º

SELECT * FROM logins WHERE username = ¡®tolkien¡¯ AND (TRUE OR (¡®a¡¯=¡¯a¡¯ AND password = ¡®¡¯)) #successful MongoDB injection

ÃÜÂë³ÉΪÕâ¸ö²éѯ¶àÓàµÄÒ»²¿·Ö£¬ÒòΪ£¨£©ÄÚµÄÌõ¼þ×ÜÎªÕæ£¬ËùÒÔ²»»áÓ°Ïìµ½²éѯµÄ×îÖÕ½á¹û¡£

ÕâÊÇÔõô·¢ÉúµÄÄØ£¿ÒÔÏÂΪƴ½Ó³öµÄ²éѯ´®£¬Óû§ÊäÈëΪ¼Ó´Ö×ÖÌ壬ʣÓàµÄÎı¾´®ÎªÎÞ¸ñʽ×ÖÌ壺

{ username: ¡®tolkien¡¯, $or: [ {}, { ¡®a¡¯: ¡®a¡¯, password ¡®¡¯ } ], $comment: ¡®successful MongoDB injection¡¯ }

Õâ¸ö¹¥»÷ÔÚÈκÎÖ»ÒªÓû§ÃûÕýÈ·µÄÇé¿ö϶¼½«³É¹¦£¬Ò»°ãµÃµ½¸öÓû§Ãû²¢²»ÊÇʲôÄÑÊ¡£

NoSQL JavaScript×¢Èë

NoSQLÊý¾Ý¿âÖÐÓиö¹²Í¬ÌØÐÔ£¬ÄǾÍÊÇ¿ÉÒÔÔÚÊý¾Ý¿âÒýÇæÖÐÔËÐÐJavaScript£¬´Ó¶ø¿ÉÒÔÖ´Ðи´ÔӵIJéѯ»òMapReduceÖ®ÀàµÄÊÂÎñ¡£°üÀ¨MongoDB ºÍ CouchDB¼°ÆäºóÐøµÄ Cloudant ºÍ BigCouchµÈÁ÷ÐеÄÊý¾Ý¿â¶¼ÔÊÐíÕâô×ö¡£Èç¹û²»¸É¾»µÄÓû§ÊäÈë·¢ÏÖÕâÖÖ²éѯ·½Ê½µÄ»°£¬ÕâôִÐÐJavaScript¾ÍµÈÓڰѱ¡ÈõÃæ±©Â¶¸ø¹¥»÷ÕßÁË¡£ÀýÈ磬ÉèÏëÒ»¸öÐèÒªJavaScript´úÂëµÄ¸´ÔÓÊÂÎñ£¬°üº¬Óв»¸É¾»µÄÓû§ÊäÈë×÷Ϊ²éѯµÄ²ÎÊý¡£ÈÃÎÒÃÇ¿´Ò»ÏÂËüµÄ´æ´¢Ä£ÐÍ£¬Ëü±£´æÁËÒ»×éÌõÄ¿£¬Ã¿¸öÌõÄ¿¾ßÓм۸ñºÍÊýÁ¿ÊôÐÔ¡£ÎªµÃµ½ÕâЩÊôÐÔµÄ×ÜÊý»òƽ¾ùÖµ£¬¿ª·¢ÈËÔ±±àдÁËÒ»¸öMapReduceº¯Êý£¬Ëü´ÓÓû§ÄÇÀï½ÓÊÕÊýÁ¿»ò¼Û¸ñ×÷Ϊ²ÎÊý£¬È»ºó½øÐд¦Àí¡£ÔÚPHPÖУ¬¿´ÆðÀ´ÊÇÈçÏ´úÂ루$paramÊÇÓû§ÊäÈ룩£º

$map = ¡°function() { for (var i = 0; i < this.items.length; i++) { emit(this.name, this.items[i].$param); } }¡±; $reduce = ¡°function(name, sum) { return Array.sum(sum); }¡±; $opt = ¡°{ out: ¡®totals¡¯ }¡±; $db->execute(¡°db.stores. mapReduce($map, $reduce, $opt);¡±);

Õâ¶Î´úÂë°Ñÿ¸öÌõÄ¿°´Ãû³Æ¸ø¶¨µÄ$paramºÏ¼ÆÆðÀ´¡£µ±Ê±£¬$paramÔ¤ÆÚÊǽÓÊÕÊýÁ¿£¨amount£©»ò¼Û¸ñ£¨price£©µÄ£¬Õâ¶Î´úÂ뽫°´Ô¤ÆÚ½øÐÐÔËת¡£µ«ÊÇ£¬ÒòΪÓû§ÊäÈëδ±»×ªÒ壬ËùÒÔ¶ñÒâÊäÈ루Ëü¿ÉÄܰüº¬ÈÎÒâJavaScript£©½«±»Ö´ÐС£

¿´Ò»ÏÂÈçÏÂÊäÈ룺

a);}},function(kv) { return 1; }, { out: ¡®x¡¯ });db.injection. insert({success:1});return 1;db.stores.mapReduce(function() { { emit(1,1

µÚÒ»²¿·ÖµÄÊý¾Ý»á±ÕºÏ×î³õµÄMapReduceº¯Êý£¬È»ºó¹¥»÷Õ߾ͿÉÒÔÔÚÊý¾Ý¿âÉÏÖ´ÐÐÏëÒªµÄJavaScriptÁË£¨¼Ó´Ö²¿·Ö£©¡£×îÖÕ£¬×îºóÒ»²¿·Öµ÷ÓÃÒ»¸öеÄMapReduceÒÔ±£³Ö±»×¢Èë´úÂëµÄԭʼÓï¾äµÄƽºâ¡£ÔڰѻᱻִÐеÄÓû§ÊäÈëºÏ²¢µ½Îª×Ö·û´®ºó£¬ÎÒÃǵõ½ÒÔÏ´úÂ루עÈëµÄÓû§ÊäÈë¼Ó´ÖÏÔʾ£©£º

db.stores.mapReduce(function() { for (var i = 0; i < this.items.length; i++) { emit(this.name, this.items[i].a); } },function(kv) { return 1; }, { out: ¡®x¡¯ }); db.injection.insert({success:1}); return 1;db.stores. mapReduce(function() { { emit(1,1); } }, function(name, sum) { return Array. sum(sum); }, { out: ¡®totals¡¯ });¡±

Õâ¸ö×¢Èë¿´ÆðÀ´Óë¾­µäµÄSQL×¢Èë·Ç³£ÏàËÆ¡£·ÀÓù´ËÀ๥»÷µÄÒ»ÖÖ·½Ê½ÊÇÔÚÊý¾Ý¿âÅäÖÃÖнûÖ¹Ö´ÐÐJavaScript¡£Èç¹ûJavaScriptÊDZØÐèµÄ£¬ÄÇô×îºÃµÄ²ßÂÔÊDz»Ê¹ÓÃÈκÎÓû§ÊäÈë¡£

¼üÖµ¶ÔÊý¾Ý´æ´¢

ÏñMemcached¡¢RedisºÍTachyonÖ®ÀàµÄ¼üÖµ¶Ô´æ´¢ÊÇÄÚ´æÊý¾Ý´æ´¢£¬Ö¼ÔÚ¼Ó¿ìÓ¦Óá¢ÔƼܹ¹ºÍƽ̨ÒÔ¼°´óÊýÁ¿¿ò¼ÜµÄÖ´ÐÐËÙ¶È¡£ÕâЩƽ̨¿¼ÂǵÄÊÇ·´¸´Æµ·±·ÃÎʵÄÊý¾ÝµÄ´æ´¢ºÍ¼ìË÷¡£ËüÃÇͨ³£´¦ÓÚÊý¾Ý´æ´¢Ö®Ç°£¬Èçͼ4Ëùʾ¡£»º´æ¼Ü¹¹¾­³£´æ´¢ÈÏÖ¤ÁîÅÆ¼°ÈÝÆ÷·ÃÎÊ¿ØÖÆÁÐ±í£¬¶ÔÓÚÿ¸öºóÐøµÄÓû§ÇëÇó±ØÐëÖØÐÂʹÆäÉúЧ¡£

ͼ4 ·Ö²¼Ê½ÄÚ´æÊý¾Ý´æ´¢¼Ü¹¹¡£±»¹¥»÷µÄWeb·þÎñÆ÷ʹÓÃÒ»¸ö¼üÖµÊý¾Ý´æ´¢½øÐпìËÙÊý¾Ý¼ìË÷¡£¶ÔÊý¾Ý´æ´¢µÄ²éѯÊÇÔÚ¸ÃWeb·þÎñÆ÷ÉÏͨ¹ýÓû§ÌṩµÄÊý¾Ý¹¹½¨³öÀ´µÄ¡£Èç¹û´¦Àí²»Êʵ±£¬Óû§Êý¾Ý¿ÉÒÔµ¼ÖÂÒ»¸ö·Ç·¨²éѯעÈ룬Ëü½«±»¸Ã¼üÖµÃæÄ¿Êý¾Ý´æ´¢´¦Àí£¬µ¼ÖÂÓ¦ÓÃÂß¼­ÖеĴíÎó£¬ÒÔ´ËÈÆ¹ýÈÏÖ¤»ò½øÐÐÓꦵÄÊý¾Ý¼ìË÷¡£

¾¡¹ÜÓÉÓÚ¼üÖµ¶Ô²éѯºÜ¼òµ¥ËùÒÔͨ³£»º´æAPIÒ²·Ç³£¼òµ¥£¬µ«ÎÒÃÇ·¢ÏÖÒ»¸öMemcached£¨µÚ¶þÊÜ»¶Ó­µÄ¼üÖµ¶ÔÃæÄ¿È«·Ç£©Ç±ÔÚµÄ×¢Èë¹¥»÷ÊֶΣ¬ÄǾÍÊÇ»ùÓÚÌØ¶¨PHP°æ±¾µÄMemcachedÇý¶¯³ÌÐòÖеÄ©¶´¡£´ï³ÉÒÔÏÂÌõ¼þ¼´¿É½øÐй¥»÷£º

ÓÃ×÷´«µÝ¸ø»º´æset/get µÄÊôÐÔ£¨ÀýÈ磬value£©ÊÇÀ´×ÔÓÚÓû§ÇëÇóµÄÐÅÏ¢£¨ÀýÈ磬HTTP±êÍ·£©

½ÓÊÕµ½µÄ×Ö·û´®Î´¾­¹ý´¦Àí¾Í·¢ËÍÁË

»º´æµÄÊôÐÔ°üÀ¨½«µ¼Ö²éѯִÐв»Í¬ÓÚÔ¤ÆÚµÄÐÐΪµÄÃô¸ÐÐÅÏ¢¡£

Èç¹ûÂú×ãÕâЩÌõ¼þ£¬¹¥»÷Õ߾ͿÉÒÔ×¢Èë²éѯ»ò²Ù×ݲéѯÂß¼­£¬±ÈÈç±³¸ºÊ½²éѯ¹¥»÷¡£

±³¸ºÊ½²éѯ

°ÑÒ»¸ö¼ü¼°ÏàÓ¦µÄÖµ¼Óµ½Ê¹ÓÃMemcachedµÄÊý¾Ý¿âÖеÄÒ»×é²Ù×÷¡£µ±´ÓÃüÁîÐнçÃæµ÷ÓÃʱ£¬Õâ×麯ÊýʹÓÃÁ½ÐÐÊäÈ룬µÚÒ»ÐÐÊÇ£º

set <KEY> <FLAG> <EXPIRE_TIME> <LENGTH>,

È»ºóµÚ¶þÐÐÓÉÒª±£´æµÄÊý¾Ý¹¹³É¡£

µ±PHPÅäÖõĺ¯Êý±»µ÷ÓÃʱ£¬Ëü½ÓÊÕµÄÁ½¸ö²ÎÊý¿´ÆðÀ´ÊÇÕâÑùµÄ£º

$memcached->set(¡®key¡¯, ¡®value¡¯);

Ñо¿ÈËÔ±±íʾ£¬¸ÃÇý¶¯³ÌÐòδÄÜÕë¶Ô´øÓлسµ\r(0x0D)ºÍ»»ÐеÄ\n(0x0A)µÄASCIIÂë²ÉÈ¡´ëÊ©£¬µ¼Ö¹¥»÷ÕßÓлú»á×¢Èë°üº¬Óмü²ÎÊýµÄÐÂÃüÁîÐÐºÍÆäËû·Ç¼Æ»®ÄÚµÄÃüÁîµ½»º´æÖÐ8¡£

¿´Ò»ÏÂÈçÏ´úÂ룬ÆäÖеÄ$paramÊÇÓû§ÊäÈë²¢×÷Ϊ¼üÀ´×÷Óãº

$memcached=new Memcached(); $memcached ->addServer(¡®localhost¡¯,11211); $memcached->set($param, ¡°some value¡±);

¹¥»÷Õß¿ÉÒÔÌṩÒÔÏÂÊäÈë½øÐÐ×¢Èë¹¥»÷£º

¡°key1 0 3600 4\r\nabcd\r\nset key2 0 3600 4\r\ninject\r\n¡±

ÔÚ±¾ÀýÖУ¬Ôö¼Óµ½Êý¾Ý¿âÖеĵÚÒ»¸ö¼üÊǾßÓС°some value¡±ÖµµÄkey1¡£¹¥»÷Õß¿ÉÒÔÔö¼ÓÆäËûµÄ¡¢·Ç¼Æ»®Äڵļüµ½Êý¾Ý¿âÖУ¬¼´´øÓС°inject¡±ÖµµÄkey2¡£

ÕâÖÖ×¢ÈëÒ²¿ÉÒÔ·¢ÉúÔÚgetÃüÁîÉÏ¡£ÈÃÎÒÃÇ¿´Ò»ÏÂMemcachedÖ÷Ò³ÉϵÄʾÀý£¬ËüÒÔÕâÈýÐпªÍ·£º

Function get_foo(foo_id) foo = memcached_get(¡°foo: ¡° . foo_id) return foo if defined foo

Õâ¸öʾÀýչʾÁËMemcachedµÄµäÐÍÓ÷¨£¬ÔÚ´¦ÀíÊäÈë֮ǰÊ×Ïȼì²éÔÚÊý¾Ý¿âÖÐÊDz»ÊÇÒѾ­´æÔÚÁË¡£¼ÙÉèÓÃÀàËÆ´úÂë¼ì²é´ÓÓû§ÄÇÀï½ÓÊÕµÄÈÏÖ¤ÁîÅÆ£¬ÑéÖ¤ËûÃÇÊDz»ÊǵǼ¹ýÁË£¬ÄÇô¾Í¿ÉÒÔͨ¹ý´«µÝÒÔÏÂ×÷ΪÁîÅÆµÄ×Ö·û´®À´ÀûÓÃËü£¨×¢È벿·ÖÒѾ­¼Ó´ÖÇ¿µ÷£©£º

¡°random_token\r\nset my_crafted_token 0 3600 4\r\nroot\r\n¡±

µ±Õâ¸ö×Ö·û´®×÷ΪÁîÅÆ´«µÝʱ£¬Êý¾Ý¿â½«¼ì²éÕâ¸ö¡°random_token¡±ÊÇ·ñ´æÔÚ£¬È»ºó½«Ìí¼ÓÒ»¸ö¾ßÓС°root¡±ÖµµÄ¡°my_crafted_token¡±¡£Ö®ºó£¬¹¥»÷Õ߾ͿÉÒÔ·¢Ë;ßÓÐrootÉí·ÝµÄmy_crafted_tokenÁîÅÆÁË¡£

¿ÉÒÔ±»ÕâÏî¼¼Êõ¹¥»÷µÄÆäËûÖ¸ÁÓУº

incr <Key> <Amount>
decr <Key> <Amount>
delete <Key>

ÔÚ´Ë£¬incrÓÃÓÚÔö¼ÓÒ»¸ö¼üµÄÖµ£¬decrÓÃÓÚËõ¼õÒ»¸ö¼üµÄÖµ£¬ÒÔ¼°deleteÓÃÓÚɾ³ýÒ»¸ö¼ü¡£¹¥»÷ÕßÒ²¿ÉÒÔÓÃÏñsetºÍgetº¯ÊýÒ»ÑùµÄÊÖ¶ÎÀ´Ê¹ÓôøÀ´×Ô¼º¼ü²ÎÊýµÄÕâÈý¸öº¯Êý¡£

¹¥»÷Õß¿ÉÒÔʹÓöàÌõÄ¿º¯Êý½øÐÐͬÑùµÄ×¢È룺deleteMulti¡¢getMultiºÍsetMulti£¬ÆäÖÐÿһ¸ö¼ü×ֶζ¼¿ÉÒÔ±»×¢Èë¡£

»Ø³µ»»ÐÐ×¢Èë¿ÉÒÔ±»ÓÃÓÚÁ¬½Ó¶à¸ögetÇëÇó¡£ÔÚÒ»ÏîÎÒÃǽøÐеIJâÊÔÖУ¬°üÀ¨Ô­Ê¼getÔÚÄÚ×î¶à¿ÉÒÔÁ¬½Ó17Ìõ¡£ÕâÑù×¢Èë·µ»ØµÄ½á¹ûÊǵÚÒ»¸ö¼ü¼°ÆäÏàÓ¦µÄÖµ¡£

¸ÃÇý¶¯³ÌÐòµÄ©¶´ÒѾ­ÔÚPHP 5.5 ÖÐÐÞ¸´£¬µ«²»ÐÒµÄÊÇËüÒÑ´æÔÚÓÚ֮ǰËùÓеÄPHP°æ±¾ÖÐÁË¡£°´ÕÕW3Techs.com¶ÔÉú²úϵͳµÄPHP°æ±¾µÄͳ¼ÆÀ´¿´£¬³¬¹ý86%µÄPHPÍøÕ¾Ê¹ÓÃÁ˱È5.5ÒªÀϵİ汾£¬ÕâÒâζ×ÅÈç¹ûËûÃÇʹÓÃÁËMemcached¾ÍºÜÈÝÒ×Êܵ½ÕâÖÖ×¢Èë¹¥»÷¡£

¿çÓòÎ¥¹æ

NoSQLÊý¾Ý¿âµÄÁíÒ»¸ö³£¼ûÌØµãÊÇ£¬ËûÃÇÄܹ»³£³£±©Â¶Äܹ»´Ó¿Í»§¶ËÓ¦ÓýøÐÐÊý¾Ý¿â²éѯµÄHTTP REST API¡£±©Â¶REST API µÄÊý¾Ý¿â°üÀ¨MongoDB¡¢CouchDBºÍHBase¡£±©Â¶REST API ¾ÍÖ±½Ó°ÑÊý¾Ý¿â±©Â¶¸øÓ¦ÓÃÁË£¬ÉõÖÁÊǽö»ùÓÚHTML5µÄÓ¦Óã¬ÒòΪËü²»ÔÙÐèÒª¼ä½ÓµÄÇý¶¯³ÌÐòÁË£¬ÈÃÈκαà³ÌÓïÑÔ¶¼¿ÉÒÔÔÚÊý¾Ý¿âÉÏÖ´ÐÐHTTP²éѯ¡£Õâô×öµÄÓÅÊÆ·Ç³£Ã÷ÏÔ£¬µ«ÕâÒ»ÌØµãÊÇ·ñ°éËæ×Ű²È«·çÏÕ£¿ÎÒÃǵĻشðÊǿ϶¨µÄ£ºÕâÖÖREST API¸ø¿çÕ¾µãÇëÇóαÔ죨CSRF£©±©Â¶ÁËÊý¾Ý¿â£¬Èù¥»÷ÕßÈÆ¹ýÁË·À»ðǽºÍÆäËûÍâΧ·ÀÓù¡£

Ö»ÒªÊý¾Ý¿â²¿ÊðÔÚÖîÈç·À»ðǽ֮ÀàµÄ°²È«Éèʩ֮ºóµÄ°²È«ÍøÂçÖУ¬¹¥»÷ÕßҪΣº¦Õâ¸öÊý¾Ý¿â¾Í±ØÐëÕÒµ½ÄÜÈÃËûÃǽøÈëÕâ¸ö°²È«ÍøÂçµÄ©¶´£¬»òÕßÍê³ÉÄÜÈÃËûÃÇÖ´ÐÐÈÎÒâ²éѯµÄ×¢Èë¡£µ±Êý¾Ý¿âÔÚ°²È«ÍøÂçÄÚ±©Â¶ REST APIʱ£¬ÈκÎÄܹ»·ÃÎʸð²È«ÍøÂçµÄÈ˶¼¿ÉÒÔ½öͨ¹ýHTTP¾ÍÄÜÔÚÕâ¸öÊý¾Ý¿âÉÏÖ´Ðвéѯ£¬Òò´ËÔÚä¯ÀÀÆ÷ÉϾͿÉÒÔ·¢Æð´ËÀà²éѯÁË¡£Èç¹û¹¥»÷Õß¿ÉÒÔÔÚÍøÕ¾ÉÏÊäÈëHTML±íµ¥£¬»òÕßÆÛÆ­Óû§µ½¹¥»÷Õß×Ô¼ºµÄÍøÕ¾ÉÏ£¬¾ÍÄܹ»Í¨¹ýÌá½»Õâ¸ö±íµ¥ÔÚÊý¾Ý¿âÉÏÖ´ÐÐÈκÎpost²Ù×÷ÁË¡£¶øpost²Ù×÷°üÀ¨Ôö¼ÓÎļþ¡£

ÎÒÃÇÔÚµ÷²éÑо¿Éó²éÁËSleepy Mongoose£¬ÕâÊÇÒ»¸öÕë¶ÔMongoDBµÄÈ«¹¦ÄÜHTTP½Ó¿Ú¡£ Sleepy Mongoose APIÊÇÒÔhttp:// {host name}/{db name}/{collection name}/{action}ÕâÑùµÄURL¸ñʽ¶¨ÒåµÄ¡£²éÕÒÎļþµÄ²ÎÊý¿ÉÒÔ×÷Ϊ²éѯ²ÎÊý°üº¬ÔÚÄÚ£¬¶øÐÂÎļþÒ²¿ÉÒÔ×÷ΪÇëÇóÊý¾ÝÓèÒÔÌí¼Ó¡£ÀýÈ磬Èç¹ûÎÒÃÇÏëÒªÔÚsafe.internal.dbÖ÷»úÉϵÄÊý¾Ý¿âÖÐÃûΪhrµÄ¹ÜÀíÔ±¼¯ºÏÖÐÔö¼ÓÒ»¸öÐÂÎļþ{username:'attacker'} £¬¾Í¿ÉÒÔ·¢ËÍÒ»¸öpost HTTPÇëÇóÖÁhttp://safe.internal.db/hr/admins/_insert£¬¼ÓÉÏURL±àÂë¹ýµÄÊý¾Ýusername=attacker¡£

ÏÖÔÚÈÃÎÒÃÇ¿´¿´CSRF¹¥»÷ÊÇÈçºÎʹÓÃÕâ¸öº¯ÊýÔö¼ÓÐÂÎļþµ½¹ÜÀíÔ±¼¯ºÏÖе쬴ӶøÔÚhrÊý¾Ý¿â£¨Ëü±»ÈÏΪ´¦ÓÚ°²È«µÄÄÚ²¿ÍøÂçÖУ©ÖÐÔö¼ÓÁËÒ»¸öеĹÜÀíÔ±Óû§£¬Èçͼ5Ëùʾ¡£ÈôÏë¹¥»÷³É¹¦£¬±ØÐëÒªÂú×㼸¸öÌõ¼þ¡£Ê×ÏÈ£¬¹¥»÷Õß±ØÐëÄܲÙ×÷Ò»¸öÍøÕ¾£¬ÒªÃ´ÊÇËûÃÇ×Ô¼ºµÄÍøÕ¾£¬ÒªÃ´ÊÇÀûÓò»°²È«µÄÍøÕ¾¡£¹¥»÷ÔÚ¸ÃÍøÕ¾·ÅÖÃÒ»¸öHTML±íµ¥ÒÔ¼°Ò»¶Î½«×Ô¶¯Ìá½»¸Ã±íµ¥µÄ½Å±¾£¬±ÈÈ磺

<form action= ¡± http://safe.internal. db/hr/admins/_insert¡± method=¡±POST¡± name=¡±csrf¡±>
<input type=¡±text¡± name=¡±docs¡± value=¡± [{"username":attacker}]¡± />
</form>
<script> document.forms[0].submit(); </script>

ͼ5 NoSQL HTTP REST APIÉϵĿçÕ¾ÇëÇ󱳸ºÊ½¹¥»÷ʾÒâͼ¡£²ØÔÚ·À»ðǽºóµÄÄÚ²¿ÍøÂçÄÚµÄÓû§±»ÆÛÆ­·ÃÎÊÒ»¸ö¶ñÒâÍâ²¿ÍøÒ³£¬Õ⽫µ¼ÖÂÔÚÄÚ²¿ÍøÂçµÄNoSQLÊý¾Ý¿âµÄ REST API ÉÏÖ´ÐзÇÔ¤ÆÚµÄ²éѯ¡£

µÚ¶þ£¬¹¥»÷Õß±ØÐëͨ¹ýÍøÂçÓÕÆ­»ò¸ÐȾÓû§¾­³£·ÃÎʵÄÍøÕ¾ÆÛÆ­Óû§½øÈë±»¸ÐȾµÄÍøÕ¾¡£×îºó£¬Óû§±ØÐëÐí¿É·ÃÎÊMongoose HTTP½Ó¿Ú¡£

ÓÃÕâÖÖ·½Ê½£¬¹¥»÷Õß²»±Ø½øÈëÄÚ²¿ÍøÂç¼´¿ÉÖ´ÐвÙ×÷£¬ÔÚ±¾ÀýÖУ¬ÊDzåÈëÐÂÊý¾Ýµ½Î»ÓÚÄÚ²¿ÍøÂçÖеÄÊý¾Ý¿âÖС£ÕâÖÖ¹¥»÷Ö´Ðкܼòµ¥£¬µ«ÒªÇó¹¥»÷ÕßÒªÌáǰÕì²ìȥʶ±ðÖ÷»ú¡¢Êý¾Ý¿âÃû³Æ£¬µÈµÈ¡£

»º½â

¼øÓÚÎÒÃÇÔÚ±¾ÎÄÖÐËùÌáµ½µÄÕâЩ¹¥»÷ÊֶΣ¬NoSQL²¿ÊðÖеݲȫÎÊÌâµÄ»º½âÊǷdz£ÖØÒªµÄ¡£µ«²»ÐÒµÄÊÇ£¬Ó¦ÓòãµÄ´úÂë·ÖÎö²»×ãÒÔÈ·±£ËùÓзçÏÕ¶¼ÄܵÃÒÔ»º½â¡£Èý¸öÇ÷ÊÆÊ¹¸ÃÎÊÌ⽫±ÈÖ®Ç°ÃæÁÙ¸ü¶àµÄÌôÕ½¡£Ê×ÏÈ£¬ÔƺʹóÊý¾ÝϵͳµÄÐγɣ¬ËüÃÇͨ³£»áÖ´Ðжà¸ö¸´ÔÓÓ¦Óã¬ÕâЩӦÓÃʹÓÃÒì¹¹µÄ¿ªÔ´¹¤¾ßºÍƽ̨¡£¶øÕâЩӦÓÃͨ³£ÓÉ¿ªÔ´ÉçÇø¿ª·¢£¬´ó¶àÊýÇé¿öÏ£¬Î´¾­ÊܹýÈ«ÃæµÄ°²È«ÐÔ²âÊÔ¡£ÁíÒ»¸öÌôÕ½ÊǰéËæDevOps·½·¨ÂÛ¶øÐγɵÄÏÖ´ú´úÂ뿪·¢µÄËÙ¶È£¬ÒòΪDevOps×·ÇóµÄÊÇËõ¶Ì¿ª·¢ºÍÉú²úÖ®¼äµÄʱ¼ä¡£×îºó£¬´ó¶àÊýÓ¦Óð²È«²âÊÔ¹¤¾ß²»ÄÜÓëбà³ÌÓïÑÔµÄÓ¦Óñ£³Öͬ²½£¬ÀýÈ磬´ó¶àÊý°²È«²úÆ·²»Ö§³ÖGolang¡¢ScalaºÍ Haskel¡£

¿ª·¢ºÍ²âÊÔ

Ϊ³ä·Ö½â¾öÓÉÓ¦ÓòãÒýÈëµÄ·çÏÕ£¬ÎÒÃÇÐèÒª¿¼ÂÇÕû¸öÈí¼þ¿ª·¢ÉúÃüÖÜÆÚ£¬Èçͼ6Ëùʾ¡£

ͼ6 Ó¦ÓúͲ¿Êð°²È«µÄÉúÃüÖÜÆÚ¡£Îª³ä·Ö½â¾öÓÉÓ¦ÓòãÒýÈëµÄ·çÏÕ£¬ÎÒÃÇÐèÒª¿¼ÂÇÕû¸öÈí¼þ¿ª·¢ÉúÃüÖÜÆÚ¡£

Òâʶ¡£ºÜÃ÷ÏÔ£¬¹¹½¨×èÖ¹×¢ÈëºÍÆäËûDZÔÚ©¶´µÄ°²È«Èí¼þÊÇ×îºÃ¡¢×îÁ®¼ÛµÄ½â¾ö·½°¸¡£½¨ÒéÔÚ¸ÃÈí¼þÉúÃüÖÜÆÚÖÐÉæ¼°µ½µÄÈËÕë¶ÔËûÃǵÄÖ°Ôð½ÓÊÜÊÊÓ¦µÄ°²È«Åàѵ¡£ÀýÈ磬ÒѾ­Àí½â©¶´µÄ¿ª·¢ÈËÔ±¾Í²»Ì«¿ÉÄܰÑËüÃÇÒýÈëµ½Èí¼þÖС£

Éè¼Æ¡£Ó¦Óõݲȫ·½Ãæ±ØÐëÔÚ¿ª·¢½×¶ÎÔçÆÚÓèÒÔ¿¼ÂǺͶ¨Òå¡£¶¨ÒåʲôÐèÒªÔÚÓ¦ÓÃÄÚ±£»¤£¬ÈçºÎÈ·±£Õâ¸ö¹¦ÄÜÒѾ­×ª»¯Îª¿ª·¢½×¶ÎÖеÄÈÎÎñ²¢µÃµ½×ã¹»µÄÖØÊÓ¡£

Õë¶Ô´úÂëµÄ×î¼Ñʵ¼ù¡£½¨Òé³ä·ÖÀûÓÃÒѾ­¾­Êܹý°²È«ÑéÖ¤´¦ÀíµÄ¹²ÏíÀà¿â£¬´Ó¶ø¼õÉÙ·¸°²È«ÐÔ´íÎóµÄ»ú»á¡£ÀýÈ磬ʹÓÃÕë¶ÔÈÏÖ¤³ä·ÖÑéÖ¤¹ýµÄÀà¿â£¬¼õÉÙ¿ª·¢ÈËÔ±×Ô¼ºÊµÏÖÈÏÖ¤°Ñ©¶´ÒýÈëµ½Ëã·¨ÖеķçÏÕ¡£ÔÙ¾ÙÒ»¸öʹÓá°Ïû¶¾ºó(sanitization)¡±Àà¿âµÄÀý×Ó¡£ËùÓÐ×¢Èë¹¥»÷¶¼ÊÇȱ·¦Ïû¶¾Ôì³ÉµÄ¡£Ê¹ÓÃÒ»¸ö³ä·Ö²âÊÔÏû¶¾¹ýµÄÀà¿âÄܴܺó³Ì¶ÈÉϼõÉÙÒÔ×ÔÖ÷Ñз¢Ïû¶¾·½·¨ÒýÈë©¶´µÄ·çÏÕ¡£

ÌØÈ¨¸ôÀë¡£ÔÚ¹ýÈ¥£¬NoSQL²»Ö§³ÖÊʵ±µÄÈÏÖ¤ºÍ½ÇÉ«¹ÜÀí9¡£ÏÖÔÚ£¬ÔÚ´ó¶àÊýÁ÷ÐеÄNoSQLÊý¾Ý¿âÉϽøÐÐÊʵ±µÄÈÏÖ¤¹ÜÀíºÍ»ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖÆÈÏÖ¤ÒѾ­³ÉΪ¿ÉÄÜ¡£ÕâЩ»úÖÆ³öÓÚÁ½¸öÔ­Òò·Ç³£ÖØÒª¡£µÚÒ»£¬ËüÃÇÔÊÐíʵʩ×îÉÙÌØÈ¨µÄÔ­Ôò£¬´Ó¶ø±ÜÃâͨ¹ýºÏ·¨Óû§µÄÌØÈ¨Éý¼¶¹¥»÷¡£µÚ¶þ£¬ÀàËÆÓÚSQL×¢Èë¹¥»÷10£¬µ±Êý¾Ý´æ´¢±©Â¶ÔÚÎÒÃDZ¾ÎÄËù˵µÄ×¢Èë¹¥»÷Ö®ÏÂʱ£¬Êʵ±µÄÌØÈ¨¸ôÀëÄܽ«Î£º¦×îС»¯¡£

°²È«É¨Ãè¡£½¨ÒéÔÚÓ¦ÓûòÔ´ÂëÉÏÔËÐж¯Ì¬ºÍ¾²Ì¬Ó¦Óð²È«²âÊÔ£¨·Ö±ðΪDASTºÍSAST£©ÒÔ·¢ÏÖ×¢Èë©¶´¡£ÎÊÌâÊÇĿǰÊг¡ÉϵÄÐí¶à¹¤¾ßȱ·¦¼ì²âNoSQL×¢ÈëµÄ¹æÔò¡£DAST·½·¨±»ÈÏΪ±ÈSAST¸ü¿É¿¿11¡£ÌرðÊÇÈç¹ûÓû§Ê¹Óúó¶Ë¼ì²é·½·¨ÌáÉý¼ì²â¿É¿¿ÐԵϰ£¬ÕâÊÇÒ»ÖÖ×÷Ϊ½»»¥Ê½Ó¦Óð²È«²âÊÔÌá³öµÄ·½·¨9,12¡£Ëü»¹½¨Ò飬¼¯³ÉÕâЩɨÃ蹤¾ßµ½³ÖÐø¹¹½¨ºÍ·¢²¼ÏµÍ³ÖУ¬Èç´ËËüÃǾͻáÔÚÿ¸öÖÜÆÚ»ò¼ìÈëʱִÐУ¬È±Ïݾͻἰʱ·¢ÏÖ²¢ÐÞ¸´£¬¶ø²»Ö»ÊÇÔÚ°²È«²âÊԽ׶Ρ£

ÓÉÓÚÁ½¸öÔ­Òò£¬Õâ¿ÉÄÜ»á¼õÉÙÐÞ¸´°²È«ÐÔȱÏݵŤ×÷Á¿¡£µÚÒ»¸ö£¬ÔÚ¿ª·¢½×¶ÎÐÞ¸´È±Ïݵijɱ¾ÒªÔ¶µÍÓÚÉúÃüÖÜÆÚ¸üºóµÄ½×¶Î£¬ÌرðÊÇÒòΪ°²È«ÐÔ²âÊÔÍùÍù¶¼ÔÚ¹¦ÄÜÐÔ²âÊÔÖ®ºó£¬¶øÇÒÐÞ¸´°²È«ÐÔȱÏÝ¿ÉÄÜ»áÐèÒªÖØÐÂ×ö¹¦ÄÜÐÔ²âÊÔ¡£µÚ¶þ¸ö£¬¿ª·¢ÈËÔ±ÄÜÔÚÔçÆÚÁ˽âÕâЩȱÏÝ£¬ÔÚÖ®ºóµÄ´úÂ뿪·¢Öв»»á·¸ÀàËÆµÄ´íÎó¡£

°²È«ÐÔ²âÊÔ¡£Ó¦¸ÃÓÉרҵµÄ°²È«ÐÔ²âÊÔÈËÔ±²âÊÔÓ¦Óá£ÕâЩ²âÊÔÓ¦¸ÃÑéÖ¤ËùÓÐÔÚÉè¼Æ½×¶Î¶¨ÒåµÄ°²È«ÐèÇó¶¼ÒѾ­µÃµ½Âú×㣬²¢Ó¦¸Ã°üÀ¨Ó¦ÓúÍÖ÷»ú»ù´¡Éèʩ֮ÉÏ£¨½¨Ò龡¿ÉÄÜÓëÉú²ú»·¾³ÀàËÆ£©µÄ½þ͸²âÊÔ¡£

°²È«µÄ²¿Êð

±£³ÖÓ¦ÓÃÒ»¸öºÜÖØÒªµÄ²¿·ÖÊÇÈ·±£°²È«µÄ²¿Êð¡£Èç¹û²¿Êð²»¹»°²È«£¬ËùÓÐÔÚÓ¦ÓôúÂë²ãµÄ°²È«ÐÔŬÁ¦¿ÉÄÜÒ²¾Í¸¶Ö®¶«Á÷ÁË¡£¶øÕâÒ»½×¶ÎÓÐʱ»á±»ºöÊÓ¡£

ÍøÂç¸ôÀë¡£Adobe¡¢RSA SecurityºÍSonyµÈÆóÒµÔâÊÜÁËÎÞÊýµÄ¹¥»÷£¬ÔÚÕâЩ¹¥»÷ÖÐÄÚÍø°²È«µÄ¸ÅÄîÒѲ»ÔÙ³ÉÁ¢¡£ÄÚ²¿ÍøÂçÔÚijÖÖÇé¿öÏÂÊÇÉøÍ¸µÄ±ß½ç£¬ÎÒÃÇÓ¦¾¡¿ÉÄÜÈù¥»÷ÕߺÜÄÑ´ÓÕâÒ»µãÉϵõ½Ê²Ã´¡£¶ÔÓÚijЩÏà¶Ô½ÏÐÂȱ·¦»ùÓÚ½ÇÉ«ÊÚȨµÄNoSQLÊý¾Ý¿âÀ´½²ÕâÒ»µãÓÈÆäÈç´Ë¡£Îª´Ë£¬½¨ÒéÑϸñÅäÖÃÍøÂ磬ȷ±£Êý¾Ý¿âÖ»ÄÜÓÉÏà¹ØÖ÷»ú·ÃÎÊ£¬±ÈÈçÓ¦Ó÷þÎñÆ÷¡£

APIµÄ·À»¤¡£Îª»º½âREST API±©Â¶ºÍCSRF¹¥»÷µÄ·çÏÕ£¬ÐèÒª¶ÔÇëÇó¼ÓÒÔ¿ØÖÆ£¬ÏÞÖÆËüÃǵĸñʽ¡£ÀýÈ磬CouchDBÒѾ­²ÉÓÃÁËÒ»Ð©ÖØÒªµÄ°²È«´ëʩȥ»º½âÒòΪ±©Â¶µÄREST APIµ¼ÖµķçÏÕ¡£ÕâЩ´ëÊ©°üÀ¨Ö»½ÓÊÜJSONÄÚÈݸñʽ¡£HTML±íµ¥ÏÞÖÆÎªURL±àÂëµÄÄÚÈݸñʽ£¬ËùÒÔ¹¥»÷Õß²»ÄÜʹÓÃHTML½øÐÐCSRF¹¥»÷¡£ÁíÒ»Ïî¾Ù´ëÊÇʹÓÃAjaxÇëÇ󣬵ÃÒæÓÚͬԴ²ßÂÔ´Óä¯ÀÀÆ÷·¢ÆðµÄÇëÇó»á±»×èÖ¹¡£ÒªÈ·±£ÔÚ·þÎñÆ÷µÄAPIÖÐÒѾ­È¡ÏûÁËJSONPºÍ¿çÓò×ÊÔ´¹²Ïí£¬²»ÄÜ´Óä¯ÀÀÆ÷Ö±½Ó·¢Æð²Ù×÷£¬ÕâÒ»µãÒ²ºÜÖØÒª¡£Ä³Ð©Êý¾Ý¿â£¬±ÈÈçMongoDB£¬ÓкܶàµÚÈý·½µÄREST API£¬ÆäÖÐÐí¶à¶¼È±·¦ÎÒÃÇÔÚ´ËÌáµ½µÄ°²È«´ëÊ©¡£

¼à¿ØºÍ¹¥»÷¼ì²â

ÈËÀàÈÝÒ×·¸´í£¬¼´Ê¹×ñÑ­ËùÓа²È«¿ª·¢×î¼Ñʵ¼ù£¬ÈÔÓпÉÄÜÔÚ¿ª·¢Íêºó´ÓÈí¼þÖÐÕÒµ½Â©¶´¡£´ËÍ⣬ÔÚ¿ª·¢²âÊÔʱδ֪µÄÐµĹ¥»÷;¾¶¿ÉÄܻᱻ·¢¾ò³öÀ´¡£Òò´Ë£¬½¨ÒéÔÚÔËÐÐÆÚ½øÐÐÓ¦ÓÃµÄ¼à¿ØºÍ·ÀÓù¡£¾¡¹ÜÕâЩϵͳ¿ÉÄÜÉÃÓÚ·¢ÏÖºÍ×èֹijЩ¹¥»÷£¬µ«ÊÇËüÃDz»Á˽âÓ¦ÓÃÂß¼­ºÍÄÇЩ¼Ù¶¨ÔËÐеÄÓ¦ÓÃÏµĹæÔò£¬ËùÒÔËüÃDz»ÄÜÕÒ³öËùÓеÄ©¶´¡£

WebÓ¦Ó÷À»ðǽ¡£WebÓ¦Ó÷À»ðǽ£¨WAFs£©ÊǼì²éHTTPÊý¾ÝÁ÷ºÍ¼ì²â¶ñÒâHTTPÊÂÎñµÄ°²È«ÐÔ¹¤¾ß¡£ËüÃÇ¿ÉÒÔ×÷ΪµçÆ÷¡¢ÍøÂçÐá̽Æ÷¡¢´úÀí»òÍøÕ¾·þÎñÆ÷Ä£¿éÀ´ÊµÏÖ£¬¾ßÌåÄ¿±êÊÇΪWebÓ¦ÓÃÌṩһ¸ö¶ÀÁ¢µÄ°²È«²ã£¬¼ì²âSQL×¢ÈëÖ®ÀàµÄ¹¥»÷¡£¾¡¹ÜÒÑÖª¹¥»÷¿ÉÒÔÈÆ¹ý·À»ðǽ13£¬µ«ÎÒÃÇÈÔÈ»ÌᳫΪÕâЩϵͳÔö¼Ó¼ì²âNoSQL×¢ÈëµÄ¹æÔò¡£

ÇÖÈë¼ì²âϵͳ¡£Óë¿ÉÒÔÔÚÍøÂç²ã¼ì²â¹¥»÷µÄ·À»ðǽÀàËÆ£¬»ùÓÚÖ÷»úµÄÇÖÈë¼ì²âϵͳ£¨HIDSs£©¼à¿Ø×ÅÓ¦ÓõÄÖ´ÐкͷþÎñÆ÷ÉϵĸºÔØ¡£HIDSsͨ³£Á˽âÓ¦ÓõÄÕý³£ÐÐΪ£¬¶ÔÓëÔ¤ÆÚÐÐΪ²»·ûµÄÐÐΪ¸ø³öÔ¤¾¯£¬ËüÃÇ¿ÉÄÜÊǹ¥»÷¡£´ËÀ๤¾ß¿ÉÒÔ¼ì²âÔÚ²Ù×÷ϵͳÉÏ´«²¥µÄ©¶´£¬µ«ºÍSQL¼ì²â»òCSRFÎ޹ء£

Êý¾Ý»î¶¯¼à¿Ø¡£Êý¾Ý»î¶¯¼à¿Ø¹¤¾ßÒѳÉΪ×éÖ¯Êý¾Ý·À»¤µÄ³£¹æÐèÇó¡£ËüÃÇ¿ØÖÆÊý¾ÝµÄ·ÃÎÊ£¬ÒÔ×Ô¶¨Ò尲ȫԤ¾¯¼à¿Ø»î¶¯£¬²¢´´½¨Êý¾Ý·ÃÎʺͰ²È«Ê¼þÉ󼯱¨¸æ¡£ËäÈ»´ó¶àÊý½â¾ö·½°¸¶¨Î»µÄ¶¼ÊǹØÏµÐÍÊý¾Ý¿â£¬µ«Õë¶ÔNoSQLÊý¾Ý´æ´¢µÄ¼à¿ØÒ²ÒѾ­¿ªÊ¼Ó¿ÏÖ³öÀ´ÁË10¡£ÎÒÃÇÏ£ÍûÕâЩ½«²»¶ÏµØ¸Ä½ø³ÉΪNoSQL»î¶¯¼à¿ØµÄ³£¹æÊµ¼ù¡£Õë¶ÔÎÒÃÇÔÚ±¾ÎÄÑÝʾ¹ýµÄ×¢Èë¹¥»÷£¬ÕâЩ¹¤¾ßÊǷdz£ÓÐÓÃµÄ¼à¿ØºÍ¼ì²âϵͳ¡£

°²È«ÐÅÏ¢Óëʼþ¹ÜÀí£¨SIEM£©ÏµÍ³ºÍÍþв¾¯±¨¡£°²È«ÐÅÏ¢ºÍʼþ¹ÜÀíϵͳÕûÀíÈÕÖ¾²¢ÊáÀíÈÕÖ¾µÄ¹ØÁª¹ØÏµÈ¥°ïÖú¹¥»÷µÄ¼ì²â¡£

´ËÍ⣬Íþв¾¯±¨¹¤¾ß¿ÉÒÔ°ïÖúÌṩ¶ñÒâIPµØÖ·ºÍÓòÉϵÄÊý¾Ý£¬ÒÔ¼°ÓÐΣº¦µÄÆäËûÖ¸±ê£¬ÕâÄÜÓÐÖúÓÚ¼ì²â×¢Èë¡£

ÔËÐÐÆÚÓ¦ÓÃ×ÔÎÒ±£»¤£¨RASP£©¡£ÔËÐÐÆÚÓ¦ÓÃ×ÔÎÒ±£»¤ÒýÈëÁËÒ»ÖÖеÄÓ¦Óð²È«·½Ê½£¬ÔÚ´Ë·ÀÓù»úÖÆÊÇÔÚÔËÐÐÆÚǶÈëµ½Ó¦ÓÃÖеģ¬Ê¹Æä¿ÉÒÔ½øÐÐ×ÔÎÒ¼à¿Ø¡£ÔËÐÐÆÚÓ¦ÓÃ×ÔÎÒ±£»¤µÄÓŵ㳬¹ýÆäËû°²È«¼¼Êõ£¬ÒòΪËüÄܹ»¼ì²éÄÚ²¿µÄ³ÌÐòÁ÷תºÍÊý¾Ý´¦Àí¡£ÔÚÓ¦ÓÃÖеĹؼüλÖÃÉèÖüì²éµãÄܸü¾«È·µØ¼ì²â¸ü¶àµÄÎÊÌâ¡£¶ø²»ÀûµÄÒ»ÃæÊÇ£¬ÔËÐÐÆÚÓ¦ÓÃ×ÔÎÒ±£»¤¸¶³öÁËÐÔÄܵĴú¼Û£¬Ëü¸ß¶ÈÒÀÀµÓÚ±à³ÌÓïÑÔ£¬¶øÇÒ¿ÉÄܵ¼ÖÂÓ¦ÓÃÔÚÉú²ú»·¾³ÖÐÖÐÖ¹ÔËÐС£

NoSQLÊý¾Ý¿âÔâÊÜÏñ´«Í³Êý¾Ý¿âÒ»ÏàµÄ·çÏÕÎÊÌ⡣һЩµÍ²ã¼¼ÊõºÍЭÒéÒѾ­±äÁË£¬µ«×¢Èë·çÏÕ¡¢²»ÕýÈ·µÄ·ÃÎÊ¿ØÖƹÜÀíÒÔ¼°²»°²È«µÄÍøÂ籩¶ÈÔÈ»¾Ó¸ß²»Ï¡£ÎÒÃǽ¨ÒéʹÓþßÓÐÄÚÖð²È«´ëÊ©µÄ³ÉÊìµÄÊý¾Ý¿â¡£È»¶ø£¬¼´Ê¹Ê¹ÓÃ×ȫµÄÊý¾Ý´æ´¢Ò²ÎÞ·¨×èÖ¹ÀûÓÃWebÓ¦ÓÃÖеÄ©¶´È¥·ÃÎÊÊý¾Ý´æ´¢µÄ×¢Èë¹¥»÷¡£±ÜÃâÕâЩÎÊÌâµÄÆäÖÐÒ»ÖÖ·½·¨ÊÇͨ¹ý½÷É÷µÄ´úÂë¼ì²éºÍ¾²Ì¬·ÖÎö¡£È»¶ø£¬ÕâЩºÜÄÑʵʩ²¢ÇÒ¿ÉÄÜÓкܸߵÄÎó±¨ÂÊ¡£¾¡¹Ü¶¯Ì¬·ÖÎö¹¤¾ßÒѱíÃ÷¶Ô¼ì²âSQL×¢Èë¹¥»÷ºÜÓÐ×÷Ó㬵«ËüÃÇÐèÒª×ö³öµ÷ÕûÈ¥¼ì²âÎÒÃÇÔÚ±¾ÎÄÖÐËù˵µÄÄÇÐ©ÌØ¶¨ÓÚNoSQLÊý¾Ý¿âµÄ©¶´¡£´ËÍ⣬ÓëNoSQL·çÏÕÏà¹ØµÄ¼à¿ØºÍ·ÀÓùϵͳҲӦ¸ÃÀûÓÃÆðÀ´¡£

   
4107 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ