CakePHP - Manual/CommonTasks/DataSanitization /wiki/Manual/CommonTasks/DataSanitization History/revisions of CakePHP/Manual/CommonTasks/DataSanitization en-us 2009-04-12 22:40:58 /wiki/Manual/CommonTasks/DataSanitization/show?time=2009-04-12+22%3A40%3A58 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.commontasks.datasanitization" href="/wiki/Manual/CommonTasks/DataSanitization" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Sanitization</a> за <a href="/wiki/Manual/CommonTasks/DataSanitization?time=2009-04-12+22%3A40%3A58">2009-04-12 22:40:58</a> и <a href="/wiki/Manual/CommonTasks/DataSanitization">2009-04-12 23:20:46</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Этот метод подготовит, подтвержденные пользователем данные, для&nbsp;вывода внутри HTML. Это&nbsp;особенно полезно, если вы&nbsp;не хотите, чтобы пользователи были способны разрушить ваши шаблоны или&nbsp;вставить изображения или&nbsp;скрипты в&nbsp;ваши HTML страницы. Если опция $remove установлена в&nbsp;true, то&nbsp;обнаруженное HTML содержимое будет удалено, а&nbsp;не отрисовано, как&nbsp;часть HTML кода.<br /> $badString = '&lt;font size="99" color="#FF0000"&gt;HEY&lt;/font&gt;&lt;script&gt;...&lt;/script&gt;';<br /> echo Sanitize::html($badString);<br /> // вывод: &lt;font size=&quot;99&quot; color=&quot;#FF0000&quot;&gt;HEY&lt;/font&gt;&lt;script&gt;...&lt;/script&gt;<br /> echo Sanitize::html($badString, true);<br /> // вывод: HEY...<a name="h867-1"></a><h3>escape</h3> <div class="indent"> <strong>escape(string $string, string $connection)</strong></div> Используется для&nbsp;экранирования SQL&nbsp;выражений, добавлением слешей, в&nbsp;зависимости от&nbsp;системной настройки magic_quotes_gpc. $connection &ndash; это&nbsp;имя базы данных для&nbsp;которой экранируется строка (имя совпадает с&nbsp;именем в&nbsp;файле app/config/database.php).<a name="h867-2"></a><h3>clean</h3> <div class="indent"> <strong>Sanitize::clean(mixed $data, mixed $options)</strong></div> Эта&nbsp;функция очень сильна :), многозадачный очиститель, предназначенный для&nbsp;работы с&nbsp;целыми массивами (например $this-&gt;data). Функция принимает массив (или строку) и&nbsp;возвращает очищенную версию. Следующие очищающие действия выполняются для&nbsp;каждого элемента в&nbsp;массиве (рекурсивно): <br /> <ul><li> Лишние пробелы (включая 0xCA) замещаются нормальным пробелом. </li><li> Двустронний контроль специальных символов и&nbsp;удаление возвратов каретки для&nbsp;повышения SQL&nbsp;безопасности. </li><li> Добавление слешей для&nbsp;SQL (просто вызывает sql&nbsp;функцию, как&nbsp;показано выше). </li><li> Замена, введенных пользователем слешей, на&nbsp;верные.</li></ul> Аргумент $options может быть или&nbsp;массивом или&nbsp;строкой. Когда передается строка, то $options &ndash; это&nbsp;имя соединения с&nbsp;базой данных. Если же&nbsp;передается массив, то&nbsp;он может быть объединен со&nbsp;следующими опциями:<br /> <ul><li> connection </li><li> odd_spaces </li><li> encode </li><li> dollar </li><li> carriage </li><li> unicode </li><li> escape </li><li> backslash</li></ul> Использование clean() с&nbsp;опциями выглядит таким образом:<br /> <div class="indent"> Sanitize::clean($this-&gt;data, array('encode' =&gt; false));</div> <span class="missingpage">&lt;&lt; Валидация данных из&nbsp;контроллера</span><a href="/wiki/DataValidation/FromController/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Обработка ошибок &gt;&gt;</span><a href="/wiki/ErrorHandling/edit?add=1" title="Создать эту страницу">?</a></div><br /> <b>Удалено:</b><br /> <div class="deletions"><span class="missingpage">&lt;&lt; Валидация данных из&nbsp;контроллера</span><a href="/wiki/DataValidation/FromController/edit?add=1" title="Создать эту страницу">?</a> | (())</div></div> 2009-03-25 13:34:33 /wiki/Manual/CommonTasks/DataSanitization/show?time=2009-03-25+13%3A34%3A33 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/CommonTasks/DataSanitization" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Sanitization</a> за <a href="/wiki/Manual/CommonTasks/DataSanitization?time=2009-03-25+13%3A34%3A33">2009-03-25 13:34:33</a> и <a href="/wiki/Manual/CommonTasks/DataSanitization?time=2009-04-12+22%3A40%3A58">2009-04-12 22:40:58</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> <!--notypo-->CakePHP<!--/notypo--> класс Sanitize может быть использован для&nbsp;освобождения, подтвержденных пользователем данных, от&nbsp;злоумышленной и&nbsp;другой нежелательной информации. Sanitize &ndash; это&nbsp;внутренняя библиотека, так&nbsp;что она&nbsp;может использоваться в&nbsp;любом месте вашего кода, но, возможно, лучше всего в&nbsp;контроллерах и&nbsp;моделях.<br /> <br /> Все, что&nbsp;вам необходимо сделать &ndash; это&nbsp;подключить библиотеку Sanitize:<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?&nbsp;<br />&nbsp;&nbsp;&nbsp;App</span><span style="color: #007700">::</span><span style="color: #0000BB">import</span><span style="color: #007700">(</span><span style="color: #DD0000">'Sanitize'</span><span style="color: #007700">);&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <br /> Подключив библиотеку, вы&nbsp;можете выполнять к&nbsp;ней статические вызовы. <br /> <br /> <hr noshade="noshade" size="1" /> <a name="h867-1"></a><h3>paranoid</h3> <br /> <div class="indent"> <strong>paranoid(string $string, array $allowedChars);</strong></div> <br /> Эта&nbsp;функция уберет из&nbsp;передаваемой строки $string, все&nbsp;не&nbsp;буквенно-цифровые символы. Функция проигнорирует определенные символы, переданные в&nbsp;массиве $allowedChars.<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br />$badString&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">";:&lt;script&gt;&lt;html&gt;&lt;&nbsp;&nbsp;&nbsp;//&nbsp;&gt;@@#"</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #0000BB">Sanitize</span><span style="color: #007700">::</span><span style="color: #0000BB">paranoid</span><span style="color: #007700">(</span><span style="color: #0000BB">$badString</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">//&nbsp;вывод:&nbsp;scripthtml<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">Sanitize</span><span style="color: #007700">::</span><span style="color: #0000BB">paranoid</span><span style="color: #007700">(</span><span style="color: #0000BB">$badString</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #DD0000">'&nbsp;'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'@'</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">//&nbsp;вывод:&nbsp;scripthtml&nbsp;&nbsp;&nbsp;&nbsp;@@<br /><br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <br /> <hr noshade="noshade" size="1" /> <a name="h867-2"></a><h3>html</h3> <br /> <div class="indent"> <strong>html(string $string, boolean $remove = false)</strong></div> <br /> <br /> <br /> <span class="missingpage">&lt;&lt; Валидация данных из&nbsp;контроллера</span><a href="/wiki/DataValidation/FromController/edit?add=1" title="Создать эту страницу">?</a> | (())<br /></div></div>