Мультфильм старше 15 лет. В то время подготовленные операторы были новинкой — по крайней мере, для баз данных с открытым исходным кодом, таких как MySQL, и сред программирования, таких как PHP. Сегодня этому действительно нет оправдания.
...
Меня поражает, что веб-разработчики до сих пор не понимают лучших практик в этом вопросе...
И ситуация будет только ухудшаться, поскольку все больше и больше кода абстрагируется в (плохо написанные, но популярные) фреймворки, которые увековечивают выполнение определенных действий. глупо, и вы понятия не имеете, что это происходит, пока кто-нибудь не запустит фаззер на одной из ваших страниц и не выяснит, насколько близко все к поломке.
Предотвратить появление ссылок XKCD в комментариях, включив их в статью?
Учитывая этот послужной список, кажется, что реакция на инцидент должна заключаться в том, чтобы исправить это, а затем работать над его устранением как можно быстрее. Множество недостатков SQL-инъекций указывают на фундаментальные проблемы построения всей системы.
Меня поражает тот факт, что веб-разработчики по сей день не понимают передового опыта в этом вопросе и используют конструкции, которые требуют больше ресурсов (из определения пути во время выполнения), менее надежны и в некоторые базы данных делают невозможным оптимизацию запросов, если (как в Oracle) вы не намекаете на хер свой SQL, что просто глупо - если вы можете приложить такие усилия, вы сможете составить правильные планы и связывает.
История
MOVEit был выпущен в 2002 году компанией Standard Networks.[13] В 2006 году компания выпустила интеграцию между MOVEit и антивирусная программа остановить передачу зараженных файлов.[14]Ipswitch приобрела MOVEit в 2008 году, когда компания приобрела Standard Networks.[15] MOVEit Cloud был анонсирован в 2012 году как облачныйпередача файла программное обеспечение для управления.[16] MOVEit Cloud было первым программным обеспечением корпоративного класса для управляемой облачной передачи файлов. Он масштабируем и может обмениваться файлами между системами, группами или между людьми.[17]
В 2013 году были выпущены клиенты MOVEit для iOS и Андроид платформы. В выпуск включен мастер настройки, а также электронная почта. шифрование.[1][18]
Ipswitch Analytics была выпущена в 2015 году для мониторинга и составления отчетов с помощью программного обеспечения MOVEit. Аналитические данные включают монитор активности и автоматическое создание отчетов. Ipswitch Analytics может получать доступ к данным с серверов передачи файлов и автоматизации MOVEit.[19][20] В том же году был выпущен Ipswitch Failover. Программное обеспечение может вернуться цели точки восстановления (RPO) в секундах с целевым временем восстановления (RTO) менее минуты, что повышает доступность MOVEit.[21]
О, это не только веб-разработчики. Я работал над программами на Java, которые использовали StringBuffer/Builder, и программами на C, которые выполняли snprintf в массивы фиксированного размера для 95% запросов — с одним или двумя параметризованными запросами, разбросанными по те же разработчики. Некоторые люди, похоже, просто зациклены на том, чтобы делать SQL-запросы более сложными, чем необходимо.
Предотвратить появление ссылок XKCD в комментариях, включив их в статью?
Проблема началась, как вы говорите, с PHP, который, по крайней мере, изначально выполнял все операторы SQL встроенными и динамическими. Я вообще не слежу за PHP, предполагаю, что они уже давно позволили все делать правильно.
Это не вина самого SQL, как говорят некоторые. Я использовал базы данных, созданные еще в 1970-х годах, и они всегда обменивались данными с приложениями на хосте. переменные или, по крайней мере, выделенные буферы данных фиксированного размера (например, IMS, хотя это не реляционный). А некоторые СУБД, такие как ныне древняя DB2, имеют отдельные разрешения, позволяющие вообще использовать любую форму динамического SQL (кроме утилит например, DSNTEP2 и DSNTIAUL, хотя я видел, как ими злоупотребляли по-своему), и администратор базы данных сделал бы вам жест, если бы вы попытались это сделать. запрос.
Меня поражает тот факт, что веб-разработчики по сей день не понимают передового опыта в этом вопросе и используют конструкции, которые требуют больше ресурсов (из определения пути во время выполнения), менее надежны и в некоторые базы данных делают невозможным оптимизацию запросов, если (как в Oracle) вы не намекаете на хер свой SQL, что просто глупо - если вы можете приложить такие усилия, вы сможете составить правильные планы и связывает.
И ситуация будет только ухудшаться, поскольку все больше и больше кода абстрагируется в (плохо написанные, но популярные) фреймворки, которые увековечивают выполнение определенных действий. глупо, и вы понятия не имеете, что это происходит, пока кто-нибудь не запустит фаззер на одной из ваших страниц и не выяснит, насколько близко все к поломке.
... видимо мы уже пропатчены...
Ни Schneider Electric, ни Siemens Electric не являются энергетическими компаниями. Оба производят оборудование, используемое энергетическими компаниями, но это только часть их бизнеса.
Модернизация продукта, отнесенного к категории 2, является трудоемким и дорогостоящим мероприятием, а это означает, что это происходит только в том случае, если компания вынуждена.
Однако Шнайдер любит говорить о себе как об «энергетической компании», даже несмотря на то, что они не производят, не распределяют и не продают в розницу значительные объемы энергии. (Наиболее близкими к ним, вероятно, являются их подразделение UPS, APC).
Предотвратить появление ссылок XKCD в комментариях, включив их в статью?
Раньше я работал в одной из бесчисленных компаний, сожранных Шнайдером, но наш бизнес не имел ничего общего с энергетикой.
Это не вина самого SQL, как говорят некоторые. Я использовал базы данных, созданные еще в 1970-х годах, и они всегда обменивались данными с приложениями на хосте. переменные или, по крайней мере, выделенные буферы данных фиксированного размера (например, IMS, хотя это не реляционный). А некоторые СУБД, такие как ныне древняя DB2, имеют отдельные разрешения, позволяющие вообще использовать любую форму динамического SQL (кроме утилит например, DSNTEP2 и DSNTIAUL, хотя я видел, как ими злоупотребляли по-своему), и администратор базы данных сделал бы вам жест, если бы вы попытались это сделать. запрос.
Меня поражает тот факт, что веб-разработчики по сей день не понимают передового опыта в этом вопросе и используют конструкции, которые требуют больше ресурсов (из определения пути во время выполнения), менее надежны и в некоторые базы данных делают невозможным оптимизацию запросов, если (как в Oracle) вы не намекаете на хер свой SQL, что просто глупо - если вы можете приложить такие усилия, вы сможете составить правильные планы и связывает.
И ситуация будет только ухудшаться, поскольку все больше и больше кода абстрагируется в (плохо написанные, но популярные) фреймворки, которые увековечивают выполнение определенных действий. глупо, и вы понятия не имеете, что это происходит, пока кто-нибудь не запустит фаззер на одной из ваших страниц и не выяснит, насколько близко все к поломке.
В PHP 5 добавлен новый модуль MySQLi (улучшенный MySQL), который поддерживает подготовленные операторы, в PHP 5.5 старый модуль объявлен устаревшим, а с PHP 7 старый модуль MySQL исчез.
С другой стороны, использование (хороших) фреймворков может помочь разработчикам избежать распространенных ошибок. Что-то вроде создания собственной арифметической логики с датами или криптографии — используйте хорошо зарекомендовавшие себя популярные решения. Если вы обнаружите, что активно боретесь с тем, чего требует от вас библиотека/фреймворк, переоцените то, что вы делаете, потому что в лучшем случае это неэффективно, а в худшем — активно вредно.
Что касается контекста, PHP5 уже давно был в ходу (хотя и широко использовался) более 10 лет назад. Нет оправдания.
...студент, полное имя которого «Роберт»); БРОСИТЬ СТОЛ Студенты;--? (без кавычек).
С другой стороны, использование (хороших) фреймворков может помочь разработчикам избежать распространенных ошибок. Что-то вроде создания собственной арифметической логики с датами или криптографии — используйте хорошо зарекомендовавшие себя популярные решения. Если вы обнаружите, что активно боретесь с тем, чего требует от вас библиотека/фреймворк, переоцените то, что вы делаете, потому что в лучшем случае это неэффективно, а в худшем — активно вредно.
Назовем его SanitaryString. Вместо безопасного хранения строки в памяти, как это делает SecureString, это поможет обеспечить соблюдение санитарных правил в отношении строк, разрешая назначения только из строковых констант и других SanitaryString.