про универсальность |
[Feb. 28th, 2013|02:26 pm] |
обычно говорят: "я шо тебе должен на каждый чих писать хранимку?! мне нужна система правил, а не перечисление всех особых случаев!"
ну так вот разницы нет.
потому что при чуть более замысловатом случае чем "эту таблицу никому читать нельзя", точнее говоря, как тока у тебя появляются СОСТОЯНИЯ хранимых в базе объектов, и с изменением этих состояний меняются права доступа, так сразу же упомянутая выше разница подходов изчезает.
потому что ты ПОЛЮБОМУ ОБЯЗАН все пользовательские сценарии щательно изучить и описать. ты как минимум должен проверить "а если пользователь сделает так-то, что ему система позволит?" и проверить ты должен ВСЕ ВОЗМОЖНЫЕ попытки юзера.
ну так вот между "проверить" и "в лоб закодировать" разницы никакой на самом деле нет. и даже наоборот: ты когда пишешь "общее правило" ты пишешь правило которое даст нужное тебе значение в наперёд заданных точках. тоесть ты тот же самый сценарий пользователя кодируешь по тем же самым точкам, но при этом кодируешь КОСВЕННО, пытаясь найти более общее правило (чем для заданной оболасти определения!) и при этом это правило НИКОГДА не будет работать за пределами этой области, а если будет, то это дыра которую надо затыкать. а если и не дыра. то посовести всё равно надо проверять, иначе это несекурно.
тоесть. пытаясь написать общее правило, мы пишем штуку, секурность которой недоказана, а её доказательство эквивалентно кодированию всех случаев в лоб. а её общность вредна и мы будем с ней позже бороться.
вопросы? |
|
|
Comments: |
Именно поэтому безопасные системы не могут быть развивающимися. | |