Что лучше: взломы CSS или определение браузера?

ВАЖНО

. Лучший способ предотвратить 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 .

34
задан Knu 19 March 2015 в 11:00
поделиться

15 ответов

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

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

11
ответ дан Marc Gravell 27 November 2019 в 16:41
поделиться

Слушайте свой код! Kent Beck говорит это. И в Крыле-Tsun они говорят: будьте похожи на воду, которая изгибается! Или что-то.

Взгляд, вот CSS Взлом, чтобы заставить IE5 понимать html5: http://blog.whatwg.org/styling-ie-noscript .

И вот является то же использование JS: http://blog.whatwg.org/supporting-new-elements-in-ie .

Compare 5 страниц объяснения взлома с 5 строками хорошо понятного кода. Так, используйте JS.

Вещи обладают своими преимуществами и своими оборотными сторонами. И Ваше понимание вопроса и элегантность фактического кода следуют впереди.

0
ответ дан nes1983 27 November 2019 в 16:41
поделиться

Лично, я нашел, что это является довольно трудоемким, чтобы найти все эти взломы и протестировать их; каждое изменение Вы делаете Вас, должно протестировать в 4 + браузеры, чтобы удостовериться, что оно не повредило ничто больше.

Вам не придется протестировать 'надлежащие' взломы CSS на каждом браузере.

идея состоит в том, что Вы пишете совместимый стандартами код, и затем добавляете определенные взломы для предназначения для одного и только одного браузера (или механизм визуализации), который делает ошибку. Например, при записи "* HTML #myelement" для предназначения для исключения для IE6 только: никакой другой браузер никогда не будет затрагиваться тем взломом, таким образом, не будет никакой потребности протестировать его исчерпывающе. Это могло только пойти не так, как надо, если бы некоторый новый неясный браузер пришел и сделал точно ту же ошибку как IE6, который крайне маловероятен, не Ваш отказ и что-то, что Вы могли ожидать быть зафиксированными быстро.

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

Честно говоря, это - в любом случае не проблема, которой это однажды было, прежде всего, потому что IE5 мертв. Если Вы будете использовать Режим Стандартов doctype и писать в стандарты, он будет главным образом работать в текущем раунде браузеров. Единственный реальный остающийся проблемный случай является IE6, для которого можно быть нацелены с "* HTML"; маловероятно, что Вам будет нужно намного больше в способе взломов CSS, чем это. Дни Взлома Модели Поля, к счастью, закончены.

0
ответ дан bobince 27 November 2019 в 16:41
поделиться

Тщательно рассмотрите все выше, особенно указатели о doctype. Если необходимо применить взлом CSS, поскольку определенный браузер знает, что взломы почти всегда преодолимы. Специально для сухой статической страницы.

Разговор на основе ограниченного опыта, разрабатывающего эти вещи... Я предполагаю, что Вы хотите сделать гладкую Веб-страницу, которая высвечивается без грязного Adoobi boughtware:

  • Код страница, которая выглядит разумной на этих браузерах, все из которых могут быть протестированы на одной машине:

Op3ra 9.6, S@fari 3, Chr0me 1, 1nternet Xpl0rer 6, 7 & 8, Использование Firefux 1.5

  • @import правило CSS угробить CSS в древних браузерах и позволить им съесть пирог.

  • Использование комбинация обнаружения объектов и сниффинга браузера, чтобы найти и устранить проблемные браузеры (все версии ниже предназначенного выше). Также поймайте древние браузеры, которые Вы знаете, не до скорости (свойство CSS, которое можно протестировать и сравнить с известным значением), на всякий случай, они делают его мимо сниффера, также используют условные комментарии для выгоняния 1E5 питание его некоторая анти-CSS для успокаивания его продвигающийся, подобный для ie6 кроме содержания он в jQu3ry если вообще возможный.

  • Использование динамический элемент для загрузки jQu3ry libray в позволенные браузеры (любой, который не провалил осторожные тесты). Т.е. мы даже не импортируем библиотеку, когда мы знаем, что она не собирается работать / мы впускаем всех остальных.

  • Использование jQu3ry для рассмотрения любых проблем в поддерживаемых браузерах, большинство которых только обнаружится, когда страницы станут динамичными. Используйте jQu3ry, чтобы улучшить расположение и добавить в Вашем интерфейсе и т.д.

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

  • Сохраняют это доступным, всегда используя текстовые метки и некоторые приемы расположения, чтобы заставить их исчезнуть, если Вы должны г-н, роскошный парень меню... просто не полагается на изображения или один только JavaScript для просматривания сайтов.

  • Его достаточно легкое для блокирования чего-либо ниже Netsc@pe 4. Давая им просто основную сеть, путь это было предназначено, чтобы быть первоначально. Т.е. даже не указывайте фон или цвет, или шрифт или что-либо для них. Значения по умолчанию браузера должны хорошо работать. Информация будет доступна.

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

увы она была хорошей поставкой, но даже хорошая поставка для отпугивания когда-либо лежащего из M$ должна умереть. Не бойтесь, поскольку мы имеем еще лучший теперь ;)

<час>

Просто мои 2 цента, подаем заявку с осторожностью.

2
ответ дан 27 November 2019 в 16:41
поделиться

Я предпочитаю использовать определение браузера и помещать независимый от браузера CSS в его собственный файл.

лучшее решение, однако, состоит в том, чтобы найти CSS, который является перекрестным совместимым значением по умолчанию, и просто используйте это.

2
ответ дан Evan Fosmark 27 November 2019 в 16:41
поделиться

Хорошо взломы более быстры для браузера, но определение браузера дает лучшую удобочитаемость в Вашем CSS при структурировании его право. Если можно сделать определение браузера, и в то же время может совместно использовать CSS между браузерами, и только иметь различный css в отдельных файлах или что бы то ни было, то я использовал бы определение браузера - поскольку это - что-то, что новичок может понять, где CSS взламывает, твердо понять, не знаете ли Вы их

2
ответ дан Jesper Blad Jensen 27 November 2019 в 16:41
поделиться

Мне обычно нравится иметь таблицу стилей для совместимых стандартами браузеров, таких как Firefox и Safari и затем использовать условные комментарии , чтобы обнаружить Internet Explorer и служить ему дополнительный файл CSS, содержащий определенные для IE меры и переопределения.

4
ответ дан John Topley 27 November 2019 в 16:41
поделиться

там причина, Вы используете или не используете ни один из них?

Да. Клиентские повреждения определения браузера, если JavaScript деактивируется и не мог бы работать правильно с будущими версиями браузера. Последняя причина также верна для взломов CSS. Определение браузера серверной стороны повреждается, если пользователь явно пытается повредить его, но это все еще могла бы быть жизнеспособная альтернатива.

, Что я рекомендовал бы:

Удостоверяются, что Вы - работы кода в standars совместимых браузерах - т.е. разрабатываете в один или два из тех и проверяете browsershots.org впоследствии. Скорее всего, будет возможно реализовать желаемый результат во всех них с одной таблицей стилей.

Затем существует IE. Если существует только несколько проблем, Вы могли бы пойти со взломом CSS. Иначе используйте условные комментарии.

Редактирование:

, Если я должен поддерживать древний браузер также, я обычно иду путем постепенного ухудшения: я просто позволю им показать чистый HTML с основной таблицей стилей (размеры шрифта, цвета...). Весь необычный материал будет скрыт с @import правило.

6
ответ дан Christoph 27 November 2019 в 16:41
поделиться

Существует третья опция:

Минимизируют или избавляют от необходимости взломы CSS и определение браузера.

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

После этого я следую за этими princples:

  • Использование, что я называю минимальный CSS , имея в виду только, использует функции, которые широко поддерживаются;
  • таблицы Use для сложного макета при необходимости. Вам не может понравиться это, но откровенно сделать вещи как бок о бок расположение, таблицы будут работать над браузерами, возвращающимися десятилетие, и будут намного меньшим усилием, чем то, чтобы заставлять отделения работать с комбинациями абсолютного расположения, плавая и т.п.;
  • Сила IE6 в строгий, а не режим причуд путем добавления DOCTYPE. Я не могу подчеркнуть, насколько легче это сделает Вашу жизнь, но странно многие люди, кажется, не делают это все еще;
  • модель поля Minimize выходит или использованием корректного DOCTYPE или использованием вложенных элементов блока, а не другого взломы модели поля ; и
  • При необходимости включают дополнительные файлы CSS для соответствующих браузеров. Я склонен делать это на сервере, а не клиенте со сгенерированными страницами (который, давайте столкнемся с ним, большинство из них). Много проектов я продолжил работать, имели файлы IEfix.css.

После этого, я делю браузеры на уровни:

Уровень 1:

  • Firefox 3;
  • IE7.

Мой веб-сайт должен работа над ними.

Уровень 2:

  • Firefox 2;
  • Safari;
  • Opera;
  • Chrome.

Мой веб-сайт должен работа над ними. Это может оскорбить некоторых людей, но откровенно доля рынка этих браузеров является настолько низкой, что они просто не так важны как Firefox 3 или IE7.

Уровень 3:

  • IE6;
  • Другие.

Минимальное усилие будет приложено для работы над ними, если это не будет, например, требование компании. IE6 является кошмаром один, но это , доля рынка по состоянию на декабрь составляла 20% и быстро падение. Плюс существуют допустимые проблемы безопасности (на финансовых веб-сайтах, например) для отговаривания или даже запретить использование IE6, таким образом, что сайты как PayPal заблокировал IE6 и , Google говорит пользователям отбрасывать IE6.

30
ответ дан cletus 27 November 2019 в 16:41
поделиться

Я пытаюсь не использовать также. В большом количестве случаев проблем, которые имеет IE, можно избежать путем упрощения структуры разметки несколько.

также помогает, используете ли Вы достойный сброс CSS как Eric Meyer .

я также медленно но конечно отбрасываю поддержку IE6 как принцип, особенно учитывая последние проблемы безопасности с IE6 и IE7 - мы не собираемся изменять привычки просмотра людей и предпочтения браузера, если мы продолжаем поддерживать дрянные браузеры.

2
ответ дан Jayx 27 November 2019 в 16:41
поделиться

хаки всегда будут добавлять к вашей работе усилия, и рабочие усилия должны быть оптимизированы

сначала вы добавляете хаки, а затем начинаете беспокоиться о том, как они будут вести себя в разных браузерах и на разных машинах.

вместо этого вы можете полагаться на расширения css конкретных поставщиков http://reference.sitepoint.com/css/vendorspecific

1
ответ дан 27 November 2019 в 16:41
поделиться

Что не так с обнаружением серверной части браузера? Кажется очень эффективным и надежным (за исключением того, что пользователь меняет строку пользовательского агента). Вы можете использовать PHP либо для выбора таблицы стилей для страницы, либо для динамической генерации ее для каждого запроса - не уверен, что другие языки позволяют выводить непосредственно в файл и позволяют устанавливать заголовки вручную, но я не могу представить, что они не позволят вам идентифицировать пользовательский агент, поэтому один из этих вариантов, вероятно, применим для любой серверной среды.

2
ответ дан 27 November 2019 в 16:41
поделиться

Взломы CSS не подходят, потому что браузеры постоянно обновляются, и новые обновления могут нарушить ваши взломы, а с помощью обнаружения браузера Javascript вы можете точно подтвердить возможности браузера. Однако другой вариант - использовать минимальный CSS, чтобы убедиться, что все работает во всех ситуациях. JQuery и другие библиотеки javascript, предназначенные для пользовательского интерфейса, имеют встроенное определение возможностей браузеров, поэтому вам следует их проверить.

0
ответ дан 27 November 2019 в 16:41
поделиться

[Мой подход] [1] с использованием класса PHP для определения ОС, браузера и версии браузера.

[1]: Мой подход с использованием класса PHP для определения операционной системы, браузера и версии браузера http://reinholdweber.com/css/css-hacks-browser-version-detection-a-new-approach/

1
ответ дан 27 November 2019 в 16:41
поделиться

За 6 лет написания HTML и CSS для жизни подавляющее большинство моих проблем с CSS возникло из-за Internet Explorer.

Как указано в других ответах, вы можете использовать ] условные комментарии для обслуживания дополнительных таблиц стилей в IE (или для добавления класса к элементу или ``, если вам не нравится несколько таблиц стилей). В отличие от CSS-хаков, условные комментарии являются явными и поддерживаются. В отличие от попыток обнаружить IE из строки пользовательского агента`, они гарантированно работают.

Что касается проблем CSS, отличных от IE, я никогда не находил такой, который стоил бы обнаружения браузером.

3
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

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