предупреждение, вы можете пометить его как ложное срабатывание (если это возможно в вашей настройке). Если это невозможно, вы также можете просто сопоставить параметры запроса напрямую с аргументами метода. Поскольку у вас есть только ограниченные параметры, которые не должны причинить слишком много вреда. Если это также не вариант, вам, вероятно, нужно выяснить точный алгоритм, который использует ваш анализ кода, чтобы выяснить, какие проверки он распознает. К сожалению, большинство сканеров могут обнаружить только ограниченный набор способов проверки ввода.

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

@Controller
@RequestMapping(value = "/findDocSearch")
public class Controller {

    @Autowired
    private IFindDocService findDocService;

    @RequestMapping(value = "/byName", method = RequestMethod.GET)
    @ResponseBody
    public List<FindDocDTO> findDocByName(FindDocBean bean) {
        return findDocService.retrieveDocByName(bean.getName());
    }

    @RequestMapping(value = "/byLoc", method = RequestMethod.GET)
    @ResponseBody
    public List<FindDocDTO> findDocByLocation(FindDocBean bean) {
        return findDocService.retrieveDocByZipCode(bean.getZipcode(),
        bean.getDistance());
    }
}

и мой боб:

public class FindDocBean implements Serializable {
    private static final long serialVersionUID = -1212xxxL;

    private String name;
    private String zipcode;
    private int distance;

    @Override
    public String toString() {
        return String.format("FindDocBean[name: %s, zipcode:%s, distance:%s]",
                name, zipcode, distance);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getZipcode() {
        return zipcode;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }

    public int getDistance() {
        return distance;
    }

    public void setDistance(int distance) {
        this.distance = distance;
    }

Согласно всем предложениям, найденным до сих пор, они предлагают ограничить бин требуемыми параметрами только чем-то вроде ниже:

final String[] DISALLOWED_FIELDS = new String[]{"bean.name", "bean.zipcode", };

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setDisallowedFields(DISALLOWED_FIELDS);

Но моя проблема в том, что все 3 параметра компонента будут использоваться в любом из методов, предоставляемых на контроллере.

Может кто-нибудь, пожалуйста, предложите какое-то решение для этого. Заранее спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос