Lösan sand
Stackar är väldigt bra saker. RAII-RAII-RAII! Det är en anledning att ibland vara lite skeptisk mot GC-språk, eller snarast miljöer utan deterministisk dekonstruktion. AINA var aldrig ett komplett alfapetspel, men en orgie i stackbundenhet (vill du ha en widget som ritas upp på en viss punkt i ASCII-konsolen, jamen ta och släng in ett xystackobjekt då!).
Vad som är mindre lyckat är kanske att ta stackmodellen och knyta säkerhet till den, i ett språk där stöd inte finns. I C# finns förstås using
som någon form av komplement, men i Java finns intet, förutom disciplin. Sakai har i alla fall något som kallas "security advisors" för att göra tillfällig elevering för specifika åtgärder, främst saker som i någon mening görs utanför den inloggade användarens kontext. Det är dock lite problematiskt när man har kod av typen:
x.pushAdvisor(new AllowStudentToShootTeacherInFootAndSuchStuffAdvisor());
y.performShootingAndYouJustMightThrow();
x.clearAdvisors();
Så, vart tar ett undantag vägen? Det är möjligt att man mycket medvetet låter det gå ofångat, så att det når ut och att säkerhetskontexten återställs där. Jag har inte sett kod för det ännu, men det kanske finns. Ur underhållssynpunkt verkar det dock livsfarligt att riskera att lämna kontexten i ett tillstånd med avstängd säkerhet bara genom att man fångar kastade undantag någonstans på mitten.
Det tycks också finnas sådan kod, som lite utanför mitt fingerade citatblock fångar undantag, loggar varning och tuffar vidare. Jag misstänker som sagt att kontexten återställs, men i allra värsta fall är det t.o.m. så att en trådpool används och att Någon Annan Slumpvist Utvald Jävel helt plötsligt kommer att släppas in med full behörighet. I mindre allvarliga fall återstår ändå problemet att senare säkerhetsförfrågningar inom aktuell begäran, om sådana finns, nu eller i framtiden, kommer att besvaras permanent jakande. Jag tänker nog reda ut det här ändå, eftersom det som bugg betraktat är såpass allvarligt. Något liknande i
uusp
vore direkt pinsamt (ta i trä, vissa saker i jforum-bryggan kändes ibland lite svajiga).(Det faktum att clear, och inte pop, används, tycks också om inte trångsynt så i alla fall kortsiktigt och besvärande.)
1 kommentar:
Allow student to shoot teacher in foot? X''O
Skicka en kommentar