Какова вероятность нахождения возможных паролей, если известны первые 5 цифр хешированного значения SHA-1?

Конечная точка web-api (контроллер) - это единственный ресурс, который принимает команды get / post / put / delete. Это не обычный контроллер MVC.

Обязательно в /api/VTRouting может быть только один метод HttpPost, который принимает параметры, которые вы отправляете. Имя функции не имеет значения , если вы украшаете материал [http]. Я никогда не пробовал.

Изменить: это не работает. При разрешении он, кажется, зависит от количества параметров, а не от попыток привязки модели к типу.

Вы можете перегружать функции для приема разных параметров. Я уверен, что вы были бы в порядке, если бы объявили это так, как вы, но использовали разные (несовместимые) параметры для методов. Если параметры совпадают, вам не повезло, поскольку привязка к модели не будет знать, какой из них вы имели в виду.

[HttpPost]
public MyResult Route(MyRequestTemplate routingRequestTemplate) {...}

[HttpPost]
public MyResult TSPRoute(MyOtherTemplate routingRequestTemplate) {...}

Эта часть работает

Значение по умолчанию шаблон, который они дают при создании нового, делает это довольно явным, и я бы сказал, что вы должны придерживаться этого соглашения:

public class ValuesController : ApiController
{
    // GET is overloaded here.  one method takes a param, the other not.
    // GET api/values  
    public IEnumerable Get() { .. return new string[] ... }
    // GET api/values/5
    public string Get(int id) { return "hi there"; }

    // POST api/values (OVERLOADED)
    public void Post(string value) { ... }
    public void Post(string value, string anotherValue) { ... }
    // PUT api/values/5
    public void Put(int id, string value) {}
    // DELETE api/values/5
    public void Delete(int id) {}
}

Если вы хотите сделать один класс, который делает много вещей, для использования ajax , нет большой причины не использовать стандартный контроллер / шаблон действия. Единственное реальное отличие заключается в том, что ваши сигнатуры методов не такие красивые, и вы должны обернуть вещи в Json( returnValue), прежде чем вы их вернете.

Редактировать:

Перегрузка работает отлично, когда используя стандартный шаблон (отредактированный для включения) при использовании простых типов. Я пошел и протестировал другой путь, с двумя пользовательскими объектами с разными сигнатурами. Никогда не мог заставить его работать.

  • Связывание со сложными объектами не выглядит «глубоким», поэтому no-go
  • Вы можете обойти это, передав extra param, в строке запроса
  • Лучшая запись, чем я могу дать для доступных опций

Это сработало для меня в этом случае, см., где он вас доставит. Исключение только для тестирования.

public class NerdyController : ApiController
{
    public void Post(string type, Obj o) { 
        throw new Exception("Type=" + type + ", o.Name=" + o.Name ); 
    }
}

public class Obj {
    public string Name { get; set; }
    public string Age { get; set; }
}

И вызывается как эта форма консоли:

$.post("/api/Nerdy?type=white", { 'Name':'Slim', 'Age':'21' } )

0
задан programmer 2 March 2019 в 06:47
поделиться

1 ответ

На все, что вы спросили (и почему первый комментарий в ответ на ваш вопрос не актуален), вы получите ответ либо в блоге, на который вы ссылаетесь, либо в последующем обсуждении в комментариях. Вкратце:

Первые 5 символов означают, что существует 16 ^ 35 различных возможных суффиксов. Общее количество возможных значений исходного пароля может быть бесконечно.

Вы можете привести аргумент, что закон вероятности определяет, что основной пароль, скорее всего, будет уже в HIBP и там с более высоким счетом распространенности, но только из одного хеш-префикса у вас нет абсолютно ничего, чтобы проверить это предположение.

И даже если вы могли бы надежно угадать действительный пароль, нет контекста имени пользователя, с которым он связан. В зависимости от того, как он запрашивается, может также не быть контекста в отношении того, какая служба проверяет API, и, следовательно, нет информации о том, где фактически используется пароль.

И если после этого ты все еще параноик, просто скачай хеши и используй их локально

0
ответ дан Troy Hunt 2 March 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: