Ijabọ lori adehun ti ibi ipamọ git ati ipilẹ olumulo ti iṣẹ akanṣe PHP

Awọn abajade akọkọ ti itupalẹ iṣẹlẹ kan ti o ni ibatan si idanimọ ti awọn iṣẹ irira meji ninu ibi ipamọ Git ti iṣẹ akanṣe PHP kan pẹlu ẹnu-ọna ẹhin ti a mu ṣiṣẹ nigbati o ba fi ibeere ranṣẹ pẹlu akọsori Aṣoju Olumulo ti a ṣe apẹrẹ pataki kan ti jẹ atẹjade. Lakoko ikẹkọ awọn itọpa ti awọn iṣẹ ikọlu, o pari pe olupin git.php.net funrararẹ, eyiti ibi ipamọ git wa, ko ti gepa, ṣugbọn data data pẹlu awọn akọọlẹ ti awọn olupilẹṣẹ iṣẹ akanṣe ti gbogun. .

O ṣee ṣe pe awọn ikọlu naa ni anfani lati ṣe igbasilẹ data data olumulo ti o fipamọ sinu DBMS lori olupin master.php.net. Awọn akoonu ti master.php.net ti tẹlẹ ti lọ si olupin main.php.net tuntun ti a fi sori ẹrọ lati ibere. Gbogbo awọn ọrọ igbaniwọle idagbasoke ti a lo lati wọle si awọn amayederun php.net ni a tunto ati ilana ti yiyipada wọn ti bẹrẹ nipasẹ fọọmu imularada ọrọ igbaniwọle pataki kan. Git.php.net ati awọn ibi ipamọ svn.php.net wa kika-nikan (idagbasoke ti gbe lọ si GitHub).

Lẹhin wiwa ti iwa irira akọkọ ti a ṣe nipasẹ akọọlẹ Rasmus Lerdorf, oludasile PHP, a ro pe akọọlẹ rẹ ti gepa ati Nikita Popov, ọkan ninu awọn olupilẹṣẹ PHP bọtini, yiyi awọn ayipada pada ati dina awọn ẹtọ adehun fun iroyin iṣoro. Lẹhin akoko diẹ, riri wa pe didi naa ko ni oye, nitori laisi ijẹrisi awọn iṣe nipa lilo ibuwọlu oni-nọmba kan, alabaṣe eyikeyi ti o ni iraye si ibi ipamọ php-src le ṣe iyipada nipa rirọpo orukọ onkọwe arosọ.

Nigbamii ti, awọn ikọlu naa firanṣẹ iṣẹ irira fun Nikita funrararẹ. Nipa itupalẹ awọn akọọlẹ ti iṣẹ gitolite, ti a lo lati ṣeto iraye si awọn ibi ipamọ, a ṣe igbiyanju lati pinnu alabaṣe ti o ṣe awọn ayipada gangan. Pelu ifisi ṣiṣe iṣiro fun gbogbo awọn iṣẹ ṣiṣe, ko si awọn titẹ sii ninu akọọlẹ fun awọn ayipada irira meji. O han gbangba pe adehun ti awọn amayederun wa, nitori pe a ṣafikun awọn iṣẹ taara taara, ti o kọja asopọ nipasẹ gitolite.

Olupin git.php.net jẹ alaabo ni kiakia, ati pe ibi ipamọ akọkọ ti gbe lọ si GitHub. Ni iyara, o gbagbe pe lati wọle si ibi ipamọ, ni afikun si SSH nipa lilo gitolite, titẹ sii miiran wa ti o gba ọ laaye lati firanṣẹ awọn adehun nipasẹ HTTPS. Ni ọran yii, git-http-backend ni a lo lati ṣe ajọṣepọ pẹlu Git, ati pe a ṣe ijẹrisi nipa lilo olupin HTTP Apache2, eyiti o jẹri awọn iwe-ẹri nipasẹ iwọle si ibi ipamọ data ti o gbalejo ni DBMS lori olupin master.php.net. Wọle ko gba laaye pẹlu awọn bọtini nikan, ṣugbọn pẹlu ọrọ igbaniwọle deede. Itupalẹ ti awọn akọọlẹ olupin http jẹrisi pe awọn ayipada irira ni a ṣafikun nipasẹ HTTPS.

Nigbati o ba nkọ awọn akọọlẹ, o han pe awọn ikọlu ko sopọ ni igba akọkọ, ṣugbọn lakoko gbiyanju lati wa orukọ akọọlẹ naa, ṣugbọn lẹhin idanimọ rẹ, wọn wọle ni igbiyanju akọkọ, i.e. wọn mọ awọn ọrọigbaniwọle Rasmus ati Nikita ni ilosiwaju, ṣugbọn wọn ko mọ awọn wiwọle wọn. Ti awọn ikọlu naa ba ni anfani lati ni iraye si DBMS, ko ṣe akiyesi idi ti wọn ko lo iwọle to pe lẹsẹkẹsẹ ti a sọ pato nibẹ. Iyatọ yii ko ti gba alaye ti o gbẹkẹle. Gige ti master.php.net jẹ oju iṣẹlẹ ti o ṣeeṣe julọ, niwọn igba ti olupin yii ti lo koodu atijọ pupọ ati OS ti igba atijọ, eyiti ko ti ni imudojuiwọn fun igba pipẹ ati pe o ni awọn ailagbara ti ko ni aabo.

Awọn iṣe ti a ṣe pẹlu fifi sori ẹrọ ti agbegbe olupin master.php.net ati gbigbe awọn iwe afọwọkọ si ẹya tuntun ti PHP 8. Awọn koodu fun ṣiṣẹ pẹlu DBMS ti ni iyipada lati lo awọn ibeere parameterized ti o diju iyipada ti koodu SQL. A lo algorithm bcrypt lati tọju awọn hashes ọrọ igbaniwọle sinu ibi ipamọ data (tẹlẹ, awọn ọrọ igbaniwọle ti wa ni ipamọ nipa lilo hash MD5 ti ko ni igbẹkẹle). Awọn ọrọ igbaniwọle ti o wa tẹlẹ jẹ atunto ati pe o ti ṣetan lati ṣeto ọrọ igbaniwọle tuntun nipasẹ fọọmu imularada ọrọ igbaniwọle. Niwọn igba ti iraye si git.php.net ati awọn ibi ipamọ svn.php.net nipasẹ HTTPS ti so si MD5 hashes, o pinnu lati fi git.php.net ati svn.php.net silẹ ni ipo kika-nikan, ati tun gbe gbogbo rẹ lọ. awọn ti o ku si wọn awọn ibi ipamọ itẹsiwaju PECL lori GitHub, iru si ibi ipamọ PHP akọkọ.

orisun: opennet.ru

Fi ọrọìwòye kun