Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Вы определенно хотите allow_url_include
набор к Прочь, который снижает многие риски allow_url_fopen
также.
, Но потому что не все версии PHP имеют allow_url_include
, лучшая практика для многих должна выключить fopen. Как со всеми функциями, действительность - то, что, если Вам не нужен он для Вашего приложения, отключите его. При необходимости в нем вихревой модуль, вероятно, может сделать это лучше, и рефакторинг приложения для использования завихрения для отключения allow_url_fopen
может удержать наименее решительного взломщика.
Я думаю, что ответ сводится, как хорошо Вы доверяете своих разработчиков для использования функции ответственно? Данные из внешнего URL нужно рассматривать как какой-либо другой недоверяемый вход и, пока это понято, каково грандиозное предприятие?
способ, которым я вижу его, состоит в том, что, если Вы рассматриваете своих разработчиков как дети и никогда не позволяете им обработать резкие вещи, затем у Вас будут разработчики, которые никогда не изучают ответственности написания безопасного кода.
Атаки с использованием кросс-сайтовых сценариев являются болью, таким образом, это - голосование против. И Вы должны абсолютно иметь" allow_url_include" набор к прочь, или Вы будете в для мира вреда.
Это зависит от типа разработки. Если Ваша разработка прототипа, затем включающая 'allow_url_fopen', прекрасна однако нет значительного различия в скорости между libcurl и file_get_contents, и включение его является только вопросом удобства.
Для рабочих серверов любой вызов к libcurl должен быть отмечен для проверки защиты. Как должен fopen и file_get_contents, если 'allow_url_fopen' включен. Отключение 'allow_url_fopen' не предотвращает использование, оно незначительно ограничивает количество способов, которыми они могут быть сделаны.
Большая проблема в том, что allow_url_fopen не более защищен , поэтому, если вы хотите сохранить файл с URL-адреса с помощью curl, вы должны перейти от fopen / file_get, чтобы сохранить файл.
- CURL хорош только для получения удаленного содержимого из URL. (allow_url_fopen не обязательно)
- CURL необходимо добавить с помощью Fopen или File_get, если вы хотите сохранить удаленный файл на ваш сервер. (allow_url_fopen обязательно с CURL)
Php должен найти другие способы сделать его более защищенным.