Альтернатива mysql_real_escape_string - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Sun, 29 Dec 2024 09:43:19 +0300 mysql_escape_string устарела давно ее выпиливают из PHP<br> а так помимо обратного слеша есть куда более опасные символы которые могут не только привести к взлому путем sql инъекции (нулевой байт итд) но и поломать таблицу<br> насколько я знаю символы окончания строк и перевода кареток не опасны для mysql в отличии от sqlite https://visavi.net/topics/37292/629873 Альтернатива mysql_real_escape_string Вантуз-мен Mon, 01 Apr 2013 06:25:43 +0400 Сообщения https://visavi.net/topics/37292/629873 <blockquote class="blockquote"><strong>JaKazanova</strong> Первое что, мне пришло в голову это - addslashes(str) которая,аналогично mysql_real_escape_string() экранирует все, как двойные, так и одинарные кавычки. На ней и решил остановится. </blockquote> Если ты используешь, кодировку UTF-8 или любую однобайтовую, то addslashes достаточно. Обычно, правда, цифровые параметры фильтруют отдельно, но, в принципе, можно все входные данные помещать в кавычки. https://visavi.net/topics/37292/629870 Альтернатива mysql_real_escape_string Петр Mon, 01 Apr 2013 05:46:41 +0400 Сообщения https://visavi.net/topics/37292/629870 <blockquote class="blockquote"><strong>JaKazanova</strong> (28 Марта 2013 / 18:22)<br> 4. <strong>Flyd</strong>, прочтите пост №1 внимательнее, будьте добры) Там все подробно описано и даже более чем. Спасибо</blockquote> В посте нет ответа на вопрос зачем фильтровать до подключения к базе https://visavi.net/topics/37292/629552 Альтернатива mysql_real_escape_string Михаил Fri, 29 Mar 2013 14:40:44 +0400 Сообщения https://visavi.net/topics/37292/629552 6. <strong>Муз-ТВ</strong>, как раз таки _real требует подключения к БД, а обычный не требует.<br> <br> <em><span style="font-size:x-small">Добавлено через 02:04 сек.</span></em><br> <pre class="prettyprint"> $_GET = array_map(&#039;mysql_escape_string&#039;, $_GET); $_POST = array_map(&#039;mysql_escape_string&#039;, $_POST); </pre> если работать с великами, то этого будет достаточно)<br> <br> <em><span style="font-size:x-small">Добавлено через 02:37 сек.</span></em><br> а вообще PDO решает все вопросы) https://visavi.net/topics/37292/629520 Альтернатива mysql_real_escape_string Владислав Fri, 29 Mar 2013 10:45:32 +0400 Сообщения https://visavi.net/topics/37292/629520 <a href="http://www.php.su/functions/?mysql-escape-string" target="_blank" rel="nofollow">http://www.php.su/functions/?mysql-escape-string</a> посмотри сюда<br> функция идентична и не использует подключения<br> <br> P.s. юзай pdo, он экранирует спец. символы автоматически https://visavi.net/topics/37292/629448 Альтернатива mysql_real_escape_string Виталий Thu, 28 Mar 2013 19:23:44 +0400 Сообщения https://visavi.net/topics/37292/629448 6. <strong>Муз-ТВ</strong>, Вы в этом полностю уверены? У меня сложилось совершенно противоположное мнение и оно к сожалению истинно ибо проверено на практике. Включите показ ошибок и Вы убедитесь в этом воочию https://visavi.net/topics/37292/629447 Альтернатива mysql_real_escape_string Момору Thu, 28 Mar 2013 19:07:54 +0400 Сообщения https://visavi.net/topics/37292/629447 Это почему mysql_real_escape_string должна возвращать ошибку?, этой функции не нужно подключение к бд. https://visavi.net/topics/37292/629445 Альтернатива mysql_real_escape_string Александр Thu, 28 Mar 2013 18:52:30 +0400 Сообщения https://visavi.net/topics/37292/629445 3. <strong>byvlad</strong>, спасибо, друг)<br> Первое как, говорится чтоб наверника)<br> Второе же, думаю большой роли не играет. Ведь и то, и другое в принципе проверка на одно и то же.<br> Важно твое конкретное мнение, слив оба представленных кода в один и проанализировав их как следует, можно ли с полной уверенностью сказать, что конструкция <br> <pre class="prettyprint"> &lt;?php if($db -&gt; query(&quot;INSERT INTO `tabla` (`id`, `name`) VALUES (&#039;&quot;.$_POST&#91;&#039;id&#039;].&quot;&#039;, &#039;&quot;.$_POST&#91;&#039;name&#039;].&quot;&#039;)&quot;) print &#039;Запись воспроизведена&#039;; ?&gt; </pre> Будет полностью безопасна и не требует дополнительной фильтрации?<br> Именно это меня и интересует, а в синтаксических конструкциях я как нибудь разберусь сам) Волнует вопрос безопасности! <br> PS<br> За ранее благодарен<br> <br> <em><span style="font-size:x-small">Добавлено через 01:49 сек.</span></em><br> 4. <strong>Flyd</strong>, прочтите пост №1 внимательнее, будьте добры) Там все подробно описано и даже более чем. Спасибо https://visavi.net/topics/37292/629444 Альтернатива mysql_real_escape_string Момору Thu, 28 Mar 2013 18:22:35 +0400 Сообщения https://visavi.net/topics/37292/629444 <blockquote class="blockquote">Не далее чем вчера у меня неожиданно образовалась острая потребность фильтровать все полученные данные еще до открытия SQL соединения.</blockquote> зачем?<br> <br> <em><span style="font-size:x-small">Добавлено через 02:07 сек.</span></em><br> <blockquote class="blockquote">То есть, ниже описаная конструкция приведет к полной фильтрации с учетом экранирования всего лишнего?</blockquote> Что именно и с какой целью ты хочешь экранировать, если у тебя нет подключения к базе, от чего защищаешься? https://visavi.net/topics/37292/629432 Альтернатива mysql_real_escape_string Михаил Thu, 28 Mar 2013 17:23:02 +0400 Сообщения https://visavi.net/topics/37292/629432 2. <strong>JaKazanova</strong>, а зачем фильтровать строку через (int) если ты уже проверил число это или нет?<br> а второй велосипед можно заменить простым mysql_escape_string<br> <br> <em><span style="font-size:x-small">Добавлено через 01:37 сек.</span></em><br> а, ну еще можно !== FALSE заменить на простую проверку вида if( ! $db-&gt;query(&quot;... https://visavi.net/topics/37292/629430 Альтернатива mysql_real_escape_string Владислав Thu, 28 Mar 2013 17:09:16 +0400 Сообщения https://visavi.net/topics/37292/629430 Никто не в курсе чель? https://visavi.net/topics/37292/629429 Альтернатива mysql_real_escape_string Момору Thu, 28 Mar 2013 16:57:51 +0400 Сообщения https://visavi.net/topics/37292/629429 Привет всем!<br> Не далее чем вчера у меня неожиданно образовалась острая потребность фильтровать все полученные данные еще до открытия SQL соединения.<br> Естественно попытка все пропустить через mysql_real_escape_string(str)<br> приведет к вполне ожидаемому результату - ошибке. Следовательно ее надо заменить альтернативной функцией. Первое что, мне пришло в голову это - addslashes(str) которая,аналогично mysql_real_escape_string() экранирует все, как двойные, так и одинарные кавычки. На ней и решил остановится. Но, как говорится: Одна голова хорошо, а две во сто крат лучше. И постольку - поскольку я отнюдь не страдаю излишней самоуверенностью то решил обратится к коллективному разуму и узнать Ваше профессиональное мнение по поводу всей выше описанной затеи. <br> Имеется в ассортименте следующий код который по мнению пользователей портала dcms.su и моему мнению должен работать безукоризненно и совершенно безопасно не зависимо от ситуации и поставленных задач.<br> То есть, ниже описаная конструкция приведет к полной фильтрации с учетом экранирования всего лишнего?<br> <pre class="prettyprint">&lt;?php function escape_string($str) { if(is_numeric($str)) $str = (int)$str; else { $str = urldecode($str); if(preg_match(&#039;#\r\n|\r|\n#&#039;, $str)) $str = preg_replace(&#039;#\r\n|\r|\n#&#039;, &#039; &#039;, $str); $str = addslashes(trim($str)); } return $str; } $_GET = array_map(&#039;escape_string&#039;, $_GET); $_POST = array_map(&#039;escape_string&#039;, $_POST); ?&gt;</pre> И в следующий код уже никак нельзя будет сделать SQl иньекцию?<br> <pre class="prettyprint">&lt;?php if($db -&gt; query(&quot;INSERT INTO `tabla` (`id`, `name`) VALUES (&#039;&quot;.$_POST&#91;&#039;id&#039;].&quot;&#039;, &#039;&quot;.$_POST&#91;&#039;name&#039;]) !== false) print &#039;Запись осуществлена&#039;; ?&gt;</pre> <br> Я всем Вам безгранично за ранее благодарен. Помните, для меня мнение каждого из Вас драгоценно) https://visavi.net/topics/37292/629416 Альтернатива mysql_real_escape_string Момору Thu, 28 Mar 2013 15:54:21 +0400 Сообщения https://visavi.net/topics/37292/629416