ВАЖНО
. Лучший способ предотвратить SQL Injection - использовать подготовленные выражения вместо экранирования , поскольку демонстрирует принятый ответ .
Существуют библиотеки, такие как Aura.Sql и EasyDB , которые позволяют разработчикам легче использовать подготовленные инструкции. Чтобы узнать больше о том, почему подготовленные операторы лучше в останавливать SQL-инъекцию , см. этот
mysql_real_escape_string()
обход и недавно зафиксированные уязвимости Unicode SQL Injection в WordPress .Предотвращение впрыска - mysql_real_escape_string ()
У PHP есть специально созданная функция для предотвращения этих атак. Все, что вам нужно сделать, это использовать функцию функции
mysql_real_escape_string
.
mysql_real_escape_string
берет строку, которая будет использоваться в запросе MySQL, и возвращает ту же строку со всеми попытками внедрения SQL безопасно сбежал. В принципе, это заменит эти неприятные кавычки ('), которые пользователь может ввести с помощью заменителя в MySQL, сэкономленная цитата.ПРИМЕЧАНИЕ: вы должны подключиться к базе данных, чтобы использовать эту функцию!
// Подключение к MySQL
$name_bad = "' OR 1'"; $name_bad = mysql_real_escape_string($name_bad); $query_bad = "SELECT * FROM customers WHERE username = '$name_bad'"; echo "Escaped Bad Injection:
" . $query_bad . "
"; $name_evil = "'; DELETE FROM customers WHERE 1 or username = '"; $name_evil = mysql_real_escape_string($name_evil); $query_evil = "SELECT * FROM customers WHERE username = '$name_evil'"; echo "Escaped Evil Injection:
" . $query_evil;Более подробную информацию вы найдете в MySQL - SQL Injection Prevention .
Я не нахожу его трудным. Если Вы не можете назвать его тогда, возможно, Вам не нужен он. Чем лучше Ваш дизайн, тем легче это желание назвать вещи, которые делает Ваш дизайн.
Теперь временные переменные, это - другая история.:)
Хорошо я вижу его с другой точки зрения, ее из самых важных вещей, если Вы хотите, чтобы Ваш код был читаем другими.
Попытка сделать его описательным и если от третьего лица, почему бы не включать имя [третьего лица] на имени класса или имени метода.
, Если это берет к длинному, просто используйте любое имя, послесловия, можно изменить его.
Когда каждое разумное имя кажется слишком длинным или ambigious, можно попытаться использовать что-то немного меньше разумный, например:
, Удостоверяются, что имя действительно уникально и существует описательный комментарий наверху класса, потому что любой, кто видит его в коде, собирается должен искать его для обнаружения то, что это делает (но когда они сделают, они, вероятно, найдут легче помнить).
Другая причина, почему у каждого разработчика программного обеспечения должны быть запись и коммуникативные способности.
фунт: Я полагаю, что обширный словарь также важен.
То, что я делаю, проверить, ли это к длинному, если я не могу помнить его к длинному
Если 8 из 10 человек понимают его, то можно безопасно предположить, что это понятно и читаемо и ясно. Всегда будут то 1 или 2 средства выбора гниды, которые попытаются дать сбой Вы ни по какой причине кроме этого, они являются мелкими.
Я нахожу, что его более легкое выбирает имя, как только что-то закончено. Осуществите рефакторинг->, Переименовывают ftw.
Это обычно чувствует себя очень естественным для меня. Я всегда делаю очень сокращенные методы, никогда, чем 6 строк кода Smalltalk (автоматически отформатированный), таким образом, я действительно не испытываю никаких затруднений при высказывании, о чем этот метод.
Иногда имена классов являются трудными, потому что слово, которое я хочу выбрать, используется где-нибудь в системе, потому что иногда то же слово имеет различные значения в отдельных контекстах. Я желаю, чтобы в тех случаях, некоторый подобный Википедии синтаксис был бы позволен, таким образом, я мог назвать свой класс "Задачей (Объект списка текущих дел)". Пока это не законно, я делаю большое слово немецкого стиля из него: ToDoListItemTask. Вы, возможно, предположили его: Мои имена методов могут быть очень длинными, также. Но я думаю, что они читаемы.
Так, в Вашем случае, Ваш класс является "методом get" или ретривером, или что бы то ни было. Вы уверены, что это должно быть смоделировано в классе? Не был должен скорее документ поставщика быть в состоянии запросить себя? Что-то как vendorDoc.requestFrom (источник); было бы легче назвать, не так ли?
аплодисменты,
niko
Если Вы - разработчик.NET, я настоятельно рекомендую читать BradA, книгу Cwalina - Руководство по проектированию Платформы. Все объясненные там.
Просто суммируйте метод/класс в 'Одном Word', отвечая, для чего это означает? И не должно быть никакого эквивалента для того слова.
Я чувствую Вашу боль.: /
мне жаль, что не было инструмента для рассмотрения исходного кода в сочетании со словарем данных (файл, описывающий различную переменную / имена методов, я предполагаю вид подобного javadoc), таким образом, Вы могли записать код как это:
class Battery
{
double I; // current
double T; // temperature
double V; // voltage
double Q; // charge
void update(double Inew, double dt) { I = Inew; Q += I*dt; }
// ... etc ...
};
и рассматривающий код инструмент мог сделать много разных вещей, чтобы облегчить просматривать код в контексте, включая напоминания о дисплее, что я = текущий (например, в области на правой стороне окна это отобразит переменные определения/семантику/комментарии для места в коде, на который Вы нажимаете), или даже позволяют Вам делать "виртуальный рефакторинг", где как рецензент кода Вы могли переименовать что-то к своей симпатии по причинам удобочитаемости/дисплея, на самом деле не изменяя код, сохраненный на диске.
так, как мне нравится самоописывать имена, я очень не хочу читать вещи как BatteryFilteredCurrentInMilliamps
. Часто во встроенных системах мы моделируем объекты на основе алгебраических уравнений, и имена как этот в уравнениях становятся очень громоздкими. (с другой стороны, "я" со шляпой на вершине и нижнем индексе "d" и верхнем индексе "*" довольно сбивает с толку.)
я - EE / системный инженер сначала с незначительными обязанностями по программному обеспечению, и в конце я действительно не забочусь о том, чем переменную называют, пока у меня есть удобный способ сказать то, что это, и отображение его в мою собственную внутреннюю модель системы, которой управляют.
Едва ли. Рассмотрение всех трудных вещей, которые необходимо понять в кодировании, говоря, что классы идентификатора и методы являются одной из самых трудных вещей в программировании, нелепо. Не понимайте меня превратно, иногда трудно думать о хорошем имени, но давайте будем настоящими здесь. Я пойду как далеко, чтобы сказать, что это - одна из самых легких частей программирования.