Сокеты: Узнайте доступность порта с помощью Java

На мой взгляд, лучший способ вообще запретить SQL-инъекцию в вашем PHP-приложении (или любом веб-приложении, если на то пошло) - это думать о архитектуре вашего приложения. Если единственный способ защитить от SQL-инъекции - не забудьте использовать специальный метод или функцию, которая делает The Right Thing каждый раз, когда вы разговариваете с базой данных, вы делаете это неправильно. Таким образом, это просто вопрос времени, пока вы не забудете правильно отформатировать свой запрос в какой-то момент вашего кода.

Принятие шаблона MVC и структуры, такой как CakePHP или CodeIgniter - это, вероятно, правильный путь: общие задачи, такие как создание безопасных запросов к базе данных, были решены и централизованно реализованы в таких рамках. Они помогают организовать ваше веб-приложение разумным образом и заставляют вас больше думать о загрузке и сохранении объектов, а не о безопасном построении отдельных SQL-запросов.

116
задан om-nom-nom 7 March 2013 в 14:24
поделиться

2 ответа

Это реализация прибытие из проекта Кэмела Apache :

/**
 * Checks to see if a specific port is available.
 *
 * @param port the port to check for availability
 */
public static boolean available(int port) {
    if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
        throw new IllegalArgumentException("Invalid start port: " + port);
    }

    ServerSocket ss = null;
    DatagramSocket ds = null;
    try {
        ss = new ServerSocket(port);
        ss.setReuseAddress(true);
        ds = new DatagramSocket(port);
        ds.setReuseAddress(true);
        return true;
    } catch (IOException e) {
    } finally {
        if (ds != null) {
            ds.close();
        }

        if (ss != null) {
            try {
                ss.close();
            } catch (IOException e) {
                /* should not be thrown */
            }
        }
    }

    return false;
}

Они проверяют DatagramSocket также, чтобы проверить, доступен ли порт в UDP и TCP.

Hope это помогает.

89
ответ дан David Santamaria 24 November 2019 в 02:16
поделиться

Если Вы не слишком обеспокоены производительностью, Вы могли бы всегда пытаться слушать на порте с помощью класс ServerSocket . Если это выдает исключение, разногласия, это используется.

public static boolean isAvailable(int portNr) {
  boolean portFree;
  try (var ignored = new ServerSocket(portNr)) {
      portFree = true;
  } catch (IOException e) {
      portFree = false;
  }
  return portFree;
}

РЕДАКТИРОВАНИЕ: , Если все Вы пытаетесь сделать, выбрать франко-порт тогда new SocketServer(0), найдет один для Вас.

33
ответ дан Eliezer 24 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

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