Java Posted October 7, 2008 Report Posted October 7, 2008 Tāpēc lietojiet Java - tur integer ir integer un string ir string! Lai visiem viss saprotams.
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 (edited) Pāris lietas, ko nepamanīju pieminam.Sadalīt datubāzes lietotāju lomas pa tādiem lietotājiem, kā skatītājs, rakstītājs dzēsējs utt. Datubāzei slēgties klāt tikai ar šiem lietotājiem. ja saprotu pareizi, piemēram, login formas pārbaudei/apstiprināšānai man vajag izmantot: 1 - datu nolasīšanai - lietotāju A (tikai SELECT) 2 - login datuma atjaunošanai - lietotāju B (tikai UPDATE) 3 - nepareiza login piefiksēšanai - lietotāju C (tikai INSERT) tas ko es neizprotu - kāds ieguvums drošības ziņā ir 3 dažādu useru izmantošanai salīdzinājumā ar vienu kuram tiesības gan SELECT, INSERT, UPDATE? Šiem lietotājiem atļaut izpildīt tikai konkrētas saglabātās procedūras (mysql gadījumā šis).Neatļaut šiem lietotājiem izpildīt nekādas citas darbības pa tiešo ar tabulām, bet visu funkcionalitāti realizēt tikai ar iepriekšdefinētajām funkcijām. kas jādara lai to realizētu? Edited October 7, 2008 by 1mher3
Klez Posted October 7, 2008 Report Posted October 7, 2008 (edited) 1mher3, ieguvums ir taads, ja ļaunais hakeris dabuun tavu treshu lietotaaju (INSERT) vinsh nevar nolasiit tabulas datus (redzeet kas tur staav iekshaa) ja vinsh dabuu pirmo (SELECT) vinsh redz kas tur ir, bet nevar pievienot jaunu (adminu piem) utt .... te veel aizgaaja par to ka savaa funkcijaa izmantot jau iebuuveetu funkciju piem: function isValidFileName($file) { /* don't allow .. and allow any "word" character \ / */ return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file); } sanaak iisaak rakstiit un ja vajag kaut ko pielabot, jaalabo tikai vienaa vietaa ... un gadiijumaa ja vajag tad to paarbaudi (funkciju) var paarrakstiit Edited October 7, 2008 by Klez
Aleksejs Posted October 7, 2008 Report Posted October 7, 2008 Ideja ir tāda, ka lietotājam A vispār nedot tiesības SELECT,UPDATE vai DELETE pa taisno tabulā, bet gan nodefinēt storēto procedūru MySQLā (arī citās DB līdzīgi): Tātad nevis ļaujam lietotājam A veikt SELECT * FROM zinas, bet gan: mysql> delimiter // mysql> CREATE PROCEDURE radit_zinas -> BEGIN -> SELECT * FROM zinas; -> END; -> // Un attiecīgi datubāzes piekļuves tiesībās ierakstīt, ka lietotājam A ir tiesības izpildīt procedūru radit_zinas, bet nevis brīvi izvēlētus SQL vaicājumus. Tāda tā pamatdoma.
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 nutiko radās šāda ideja: izmantot divas datubāzes - primāro on alternatīvo kurā tiek dublēti svarīgākie dati. otrajai datubāzei piesaistīt userus tikai ar tiesībām SELECT un INSERT. un uzrakstīt funkciju kura salīdzina un brēc ja ieraksti nesakrīt. tas kaut ko jēdzīgu drošības ziņā dotu?
Java Posted October 7, 2008 Report Posted October 7, 2008 Tu domā datubāzes BACKUP? Nu jā, tas nav nekas jauns un tiešām drošības ziņā tā ir drošāk - tik tiem datiem vajadzētu glabāties, kur citur, jo BACKUP ideja ir rezerves kopijas principā! Atkarībā no datu atjaunošanas biežuma Tavā projektā ir jāveic DB backupi! Parasti aktīvos projektos tas notiek reizi diennaktī! Var gadīties, ka nepieciešams ir arī 2x dienā!
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 Lūdzu nevajag taisīt bezjēdzīgas QUOTEs par backup ta skaidris ... bet es domāju svarīgākos datus uzreiz rakstīt divās datu bāzēs, vienai no kurām nav pievienoti useri ar tiesībām izdzēst vai izmainīt (Tad vienīgais man zināmais veids kā tur kko sačakarēt būtu ja tiek klāt hostinga cpanel)
Aleksejs Posted October 7, 2008 Report Posted October 7, 2008 Ok, tātad tu gribi, ka DB1 būtu tā, no kuras var tikai lasīt. DB2 tāda kurā var arī rakstīt. Kas notiek, ja es izdzēšu ierakstu no DB2? Kas notiek, ja es izmainu ierakstu iekš DB2?
Java Posted October 7, 2008 Report Posted October 7, 2008 Priekš kam Tev lieka greznība un resursu patēriņš - divas datubāzes? Nepietiks ar diviem lietotājiem uz vienu datubāzi? Vajag vienkārši pareizi sakonfigurēt, lai būtu droši! Rokasgrāmatas palīdzēs! Viens useris - "public" - ar iespējām tikai selectot attiecīgās tabulas, kādā tabulā varbūt vēl insertot un kādā vēl delete, skaties katrai tabulai atsevišķi. Citām varbūt pat select nevajag "public" userim! "Admin" userim atkal savas tiesības... Par divām datubāzēm - samudžināsi visu pats, tas vairāk nepieciešams, ja nu viena datubāze atrubās (ūbersvarīgiem projektiem), tad ieslēdzās otra kaut kā tā - un abas stāv uz atsevišķiem serveriem. Datubāzi dublēt varēsi backupos, kur tev stāvēs attiecīgā datuma un laika "rezerves kopija", lai minimizētu zaudējumus avārijas gadījumā!
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 Ok, tātad tu gribi, ka DB1 būtu tā, no kuras var tikai lasīt.DB2 tāda kurā var arī rakstīt. Kas notiek, ja es izdzēšu ierakstu no DB2? Kas notiek, ja es izmainu ierakstu iekš DB2? Kas notiek, ja ... Tad es par to ka ieraksti izmanīti uzzinu līdzko ieskatos admina daļā (kurā būtu scripts kas detaktē ka ieraksti nesapas), nevis kad dusmīgs users atraksta emailu jo netiek sava kontā iekšā.
Aleksejs Posted October 7, 2008 Report Posted October 7, 2008 Tātad izmaiņas DB nestājas spēkā, kamēr admins tās neapstiprina?
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 Lūdzu nevajag taisīt bezjēdzīgas QUOTEs nē... piemēram, users Aleksejs nomainījis paroli, bet datubāzē nav piefiksēts ka maiņa apstiprināta izmantojot apstiprinājuma linku (ir tāda plaši pielietota sistēma - lai usera pieprasījums mainīt paroli tiktu pārbaudīts, useram tiek nosūtīts mails ar apstiprinākuma linku, tas links šim ir jāuzspiež...), tātad parole kautkādā veidā nomainīta apejot sistēmu...
Aleksejs Posted October 7, 2008 Report Posted October 7, 2008 Kādā veidā DB "zina", ka parole nomainīta izmantojot linku?
1mher3 Posted October 7, 2008 Author Report Posted October 7, 2008 Lūdzu nevajag taisīt bezjēdzīgas QUOTEs Rodas iespaids ka kāds te man uzdod nesakarīgus jautājumus... nez kādēļ...
Aleksejs Posted October 7, 2008 Report Posted October 7, 2008 (edited) Atvainojiet. Vairs nepiedalīšos šajā diskusijā. Edited October 7, 2008 by Aleksejs
Recommended Posts