Используя отрицаемый класс символов предотвращает соответствие, когда граничный символ (doublequotes, в Вашем примере) присутствует в другом месте во входе.
Ваш пример № 1:
/"[^"]+"/ # match quote, then everything that's not a quote, then a quote
соответствия только самая маленькая пара подобранных кавычек - превосходный, и большую часть времени это - все, в чем Вы будете нуждаться. Однако, если Вы вложили кавычки, и Вы интересуетесь самой большой парой подобранных кавычек (или во всех подобранных кавычках), Вы находитесь в намного более сложной ситуации.
К счастью Damian Conway готов со спасением: текст:: Сбалансированный там для Вас, если Вы находите, что существует несколько подобранных меток кавычки. Это также имеет достоинство соответствия другой парной пунктуации, например, круглым скобкам.
Капча Honey Pot ( статья Фила Хаака ). Это обычный метод, используемый для выполнения того, что вы ищете. Это не надежно, но что на самом деле?
Похоже, это в значительной степени то, что вы уже исследовали. Просто проявите должную осмотрительность, чтобы понять, в чем заключаются ограничения решения. Если вы все же обнаружите, что оно соответствует вашим потребностям, будьте уверены, что этот метод нашел хорошее применение другими.
Если бы существовало окончательное решение, не было бы необходимости в CAPTCHA вообще. Однако, если размер вашего сайта недостаточно велик, чтобы гарантировать, что кто-то вручную ищет способ взломать его, защита через скрытность может быть лучшим способом. Например, ссылка, которую вы указали выше, или так же просто, как добавление ввода с названием что-то вроде "City_2" и его скрытие. Если поле ввода заполнено, скорее всего, у вас есть спамеры, поскольку они автоматически заполняют каждое поле - просто выгрузите данные и двигайтесь дальше ... Всего мои 2 цента.
Недавно я попробовал одну очень простую технику. Я заметил, что при наличии набора переключателей спам-боты всегда либо выбирают первый вариант, либо принимают то, что было предварительно проверено. Итак, на одном веб-сайте, который я запустил, у меня есть форма, которую пользователи заполняют, возможно, с полдюжиной вопросов. Один из вопросов - это «тип записи» с переключателями для выбора. Поэтому я добавил новый вариант выбора «Я спамер» с комментарием в скобках, объясняющим, почему этот вариант существует, и сделал его значением по умолчанию. Если форма отправляется с установленным флажком, я возвращаю сообщение об ошибке вместо обычного сообщения подтверждения. С тех пор количество получаемого мной спама сократилось почти до нуля. Я не знаю, что? Слева - спам-боты, которые используют другую стратегию - возможно, произвольно выбирают среди доступных переключателей - или, если это спамеры-люди, а не роботы.
В основном я делал это в качестве эксперимента, чтобы посмотреть, сработает ли это - и, честно говоря, потому что было забавно заставить спам-ботов просто признаться и сдаться! В основном я предлагаю это для обсуждения: может быть, это поможет в лучшую идею.
Если спамер решил, что моему маленькому сайту стоит уделить особое внимание, он мог бы легко победить это с помощью немного более умного спам-бота. Но это можно сказать о многих схемах борьбы со спамом.
В основном я делал это в качестве эксперимента, чтобы посмотреть, сработает ли это - и, честно говоря, потому, что было забавно обмануть спам-ботов, чтобы они просто признались и сдались! В основном я предлагаю это для обсуждения: может быть, это поможет в лучшую идею.
Если спамер решил, что моему маленькому сайту стоит уделить особое внимание, он мог бы легко победить это с помощью немного более умного спам-бота. Но это можно сказать о многих схемах борьбы со спамом.
В основном я делал это в качестве эксперимента, чтобы посмотреть, сработает ли это - и, честно говоря, потому, что было забавно обмануть спам-ботов, чтобы они просто признались и сдались! В основном я предлагаю это для обсуждения: может быть, это поможет в лучшую идею.
Если спамер решил, что моему маленькому сайту стоит уделить особое внимание, он мог бы легко победить это с помощью немного более умного спам-бота. Но это можно сказать о многих схемах борьбы со спамом.
Избавьтесь от 99% спама, см. Это - http://wordpress-plugins.feifei.us/hashcash/
Очевидно, это предотвращает только автоматический спам, используйте его вместе с Akismet или чем-то еще и получите 100% защиту.
Обновление: Как работает HashCash? Спам ничего не стоит (использование ботнетов бесплатно), поэтому он работает. Идея состоит в том, что если этот процесс можно сделать дорогим (CPU), то массовая рассылка спама / сообщений не будет работать. Более подробная информация здесь - http://en.wikipedia.org/wiki/Hashcash
Более простая версия может быть реализована с использованием JavaScript. Перед отправкой формы сценарий выдаст вычисленное значение. Этот процесс должен быть дорогостоящим. Большинство ботнетов избегают этого и, следовательно, не используют автоматический спам.
Это - очень хорошее рабочее решение, я использую его в своих проектах.
Стоит попробовать ...
Я использую Akismet , который на самом деле очень похож на фильтр спама по электронной почте, но довольно мощный, поскольку он непрерывно создает байесовский профиль с объединенным спамом каждого сайта, используя сервис (около 18 миллионов комментариев в день). Их веб-сервис чрезвычайно прост и очень быстр - просто отправьте комментарий по сети, и они отправят ответ «спам» или «не спам». Существуют существующих библиотек Akismet почти для каждой платформы.
На моем сайте, если комментарий проходит, я помещаю его в базу данных, в противном случае я просто игнорирую его.
Общий комментарий о любой системе защиты от спама: ничего вы будете на 100% безопасны. Если ваш сайт достаточно велик или полезен, чтобы спамер решил уделить ему особое внимание, он, вероятно, найдет способ. Но это то же самое, что обычно говорят о домашней безопасности: конечно, опытный и профессиональный вор может обыграть любую систему сигнализации, которую средний домовладелец может себе позволить. Но вы будете держаться подальше от неуклюжих любителей, и если вы создадите достаточно проблем для профессионала, вы увеличите для него риск того, что к тому времени, когда он сломает ее, вы вернетесь домой или сосед увидит его и вызовет полиция. Когда я работал в армии, мы постоянно говорили о балансе между безопасностью и предотвращением выполнения своей работы законными пользователями. Цель в вооруженных силах - не какая-то гипотетическая «абсолютная безопасность», а скорее нечто достаточно хорошее, чтобы снизить риск до «приемлемого уровня», совместимого с минимальными неудобствами для уполномоченных лиц. Очевидно, что считать «приемлемым» зависит от того, что вы защищаете: я определенно надеюсь, что люди, которые защищали ядерные боеголовки, настаивали на более высоком уровне безопасности, чем мы обеспечиваем радиолокационные системы. Люди в районах, где предполагалось нападение, таких как базы на Ближнем Востоке, имели более высокий уровень безопасности, чем у нас на базах в Центральной Америке. И т.д.
Дело в том, что: Насколько вероятна цель вашего сайта? Я определенно надеюсь, что мой банк использует более строгие меры безопасности для защиты моих денег, чем я стараюсь использовать для предотвращения рассылки спам-аннотаций на сайте конвенции, которую я запускаю. Сайты, которые имеют миллионы посетителей и хорошо известны, вероятно, нуждаются в большей безопасности, чем малоизвестные сайты с тысячами или сотнями посетителей. Насколько "достаточно хорошо"?