Почему столько сайтов обсуждает программирование в противоположность описанию систем, которые они пытаются создать? [закрытый]

Несколько рекомендаций по экранированию специальных символов в операторах SQL.

Не используйте MySQL , это расширение устарело, используйте MySQLi или PDO .

MySQLi

Для ручного экранирования специальных символов в строке вы можете использовать функцию mysqli_real_escape_string .

Пример:

$mysqli = new mysqli( 'host', 'user', 'password', 'database' );
$mysqli->set_charset( 'charset');

$string = $mysqli->real_escape_string( $string );
$mysqli->query( "INSERT INTO table (column) VALUES ('$string')" );

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

Пример:

$stmt = $mysqli->prepare( "INSERT INTO table ( column1, column2 ) VALUES (?,?)" );

$stmt->bind_param( "is", $integer, $string );

$stmt->execute();

Независимо от того, используете ли вы подготовленные операторы или mysqli_real_escape_string, вам всегда нужно знать тип входных данных, с которыми вы работаете.

Итак, если вы используете подготовленный оператор, вы должны указать типы переменных для функции mysqli_stmt_bind_param.

И использование mysqli_real_escape_string для, как сказано в названии, означает экранирование специальных символов в строке, поэтому оно не сделает целые числа безопасными. Цель этой функции - предотвратить разрыв строк в операторах SQL и повреждение базы данных, которое она может вызвать. mysqli_real_escape_string - полезная функция при правильном использовании, особенно в сочетании с sprintf.

Пример:

$string = "x' OR name LIKE '%John%";
$integer = '5 OR id != 0';

$query = sprintf( "SELECT id, email, pass, name FROM members WHERE email ='%s' AND id = %d", $mysqli->real_escape_string( $string ), $integer );

echo $query;
// SELECT id, email, pass, name FROM members WHERE email ='x\' OR name LIKE \'%John%' AND id = 5

$integer = '99999999999999999999';
$query = sprintf( "SELECT id, email, pass, name FROM members WHERE email ='%s' AND id = %d", $mysqli->real_escape_string( $string ), $integer );

echo $query;
// SELECT id, email, pass, name FROM members WHERE email ='x\' OR name LIKE \'%John%' AND id = 2147483647

26
задан Nathan Smith 17 October 2017 в 07:04
поделиться

11 ответов

Существует сайт База данных ответов , который пытается предоставить решения для общих конструкций баз данных. Это не то же самое, что полное решение, которое вы описываете, но это шаг в правильном направлении.

Вы комментируете: «[o] вы не можете построить так много [...] систем, прежде чем» общность становится очевидной. Однако те, кто построил достаточно таких систем, чтобы обнаружить общность, затем пытаются извлечь из нее выгоду, создав свою версию общей системы, а затем продают ее. В их интересах (не считается), чтобы они помогали другим людям, которые могли бы сделать то же самое, помочь.

5
ответ дан Jonathan Leffler 28 November 2019 в 17:19
поделиться

Существуют, но они обычно выполняются поставщиками, желающими продать Вам решение.:-/;

6
ответ дан Mark Harrison 28 November 2019 в 17:19
поделиться

Я полностью согласен, где находится «Руководство Dummy по инвентаризации ИТ», аккредитованная модель данных для клиентов, адреса, контактные данные и т. Д. И т. Д. Я обнаружил, что заново внедряю один и тот же код в очень многих разных местах, с немного разные поля и логика, но в основном это одно и то же. Несколько лет назад я нашел сайт с предварительно приготовленными моделями данных - маленький шаг в правильном направлении, но не весь рассказ Универсальные модели данных (без связи). Вы заметите, что они не очень интересовались своим продуктом.

Я также работал в нескольких организациях, которые разрабатывали свою собственную «универсальную» модель данных в качестве товарного продукта. Один был в области финансовых услуг, и они получили более 1500 таблиц DB2 и сдались. Организации гордятся своей уникальностью, в то время как мы (технические специалисты) понимаем, что большинство из них делают довольно похожие вещи - я думаю, что это может быть слишком вредным для корпоративного эго, чтобы признаться, и признаем, что они такие же, как и все остальные. использование UniversalCustomer (TM) 1.7. Кроме того, это делает эти компании зрелыми для SAP, Peopleware и т. Д.

Как заключительная мысль - здесь есть много низко висящих фруктов для предпринимателей. Достойный набор коротких книг с описанием общих доменов. Я имею в виду очень простые вещи, имя человека, адрес, телефон и т. Д. - со всеми маленькими недостатками, такими как заголовок в разных культурах, и разметкой номера телефона - теперь есть книга / вики, которую могут использовать многие люди.

4
ответ дан MrTelly 28 November 2019 в 17:19
поделиться

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

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

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

пример Худшего случая: кто-либо еще заметил, что шаблон в планирующих сотрудника и workhour-системах-отчетности показывает одну неделю на экран и многоэкранные формы ввода данных?

3
ответ дан dkretz 28 November 2019 в 17:19
поделиться

Проверьте Книгу Ресурса Модели данных Len Silverston:

http://www.amazon.com/Data-Model-Resource-Book-Vol/dp/0471380237/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1232336996&sr=8-1

Это приближается к допускающему повторное использование дизайну с точки зрения модели данных, в противоположность проектам OO или требованиям конечного пользователя. Однако я нахожу, что, чтобы быть очень полезными - как только у Вас есть хорошее схватывание модели данных, у Вас есть большой переход на требованиях и объектах, которые будут в конечном счете смоделированы как классы.

2
ответ дан mbeckish 28 November 2019 в 17:19
поделиться

Это было бы невозможно продать. Первое утверждение, которое вы неизбежно получите от любого, кто распространяет RFQ для системы: «Мы не похожи на другие компании. Наши требования уникальны». (И никогда не бывает.)

1
ответ дан dkretz 28 November 2019 в 17:19
поделиться

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

Теперь вот книга от Microsoft по теме, но как со всеми доменными шаблонами, идея состоит в том, что они должны органически вырастить и соответствовать потребностям пользователей домена и экспертов. Если Вы хотите истинный источник выезда идеи основополагающая книга по шаблонам , хотя это от Архитектуры и не программирования, неожиданного удивления:)

1
ответ дан Robert Gould 28 November 2019 в 17:19
поделиться

В 80-х и начале 90-х годов было огромное движение «повторного использования программного обеспечения». Была значительная индустрия людей, создающих и настраивающих каталоги программных компонентов. Это было расценено многими как будущее программного обеспечения. Хороший обзор - Уилл Трэкз «Признания продавца подержанного программного обеспечения»; Гугл термины "Брэд Кокс Software IC", "Мартин Грисс". Насколько я помню, победа была объявлена, и все перешли к другим проблемам.

Я вижу, что «Планирование промышленной революции программного обеспечения» Брэда Кокса онлайн:
http://www.virtualschool.edu/cox/pub/PSIR/

1
ответ дан ja. 28 November 2019 в 17:19
поделиться

Существуют различные усилия правительств попытаться стандартизировать модели данных, чтобы позволить совместно использовать между различными агентствами, но они имеют мало ни к какому принятию за пределами того, где это требуется. В Канаде, например, мы имеем CPSIN.

0
ответ дан Eclipse 28 November 2019 в 17:19
поделиться

Возможно, вы захотите проверить паттерны корпоративной архитектуры приложений Мартина Фаулера - хотя это и не спецификации, но, похоже, это то, что вам нужно.

Отказ от ответственности: я не читал это сам, я только знаю о его существовании.

0
ответ дан Chris Latta 28 November 2019 в 17:19
поделиться

Кто бы мог создать такую ​​вещь? Кто бы использовал это?

Насколько я могу судить, вы говорите о библиотеке проектов приложений. Люди, готовые делиться такими детальными проектами, уже делают это - в форме открытых спецификаций или открытого исходного кода. Первый обычно привлекает людей и организации, которые уже участвуют в создании продуктов, которые реализуют такие спецификации, или продуктов, которые взаимодействуют с системами, которые это делают. Последнее ... ну, зачем беспокоиться о повторной реализации проекта, когда вы можете просто взломать источник?

Как отмечает Марк Харрисон , существует множество компаний. готовы продвигать свои разработки для общих бизнес-систем. «Купите нашу систему и просто используйте функциональность, необходимую для вашей организации», - скажут они вам; "Зачем тратить время на повторное внедрение того, что мы уже сделали?" У них очень мало мотивации для того, чтобы делиться подробными спецификациями реализации, поскольку они действительно не хотят, чтобы вы повторно реализовывали то, что они пытаются продать вам.

Наконец ... Эти вещи на самом деле не так уж и сложны. Или, скорее, они ... но сложность рождается из размера, из бесчисленных комбинаций тайных требований, которые любая конкретная организация может навязать системе. Настоящая работа заключается в интерпретации этих требований, встраивании их в базовую систему - и, хотя это может быть утомительно, это неизбежно.

-1
ответ дан 2 revsKnives 28 November 2019 в 17:19
поделиться
Другие вопросы по тегам:

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