api Posted July 23, 2015 Report Share Posted July 23, 2015 function security( $value ){ if( is_array( $value ) ){ $value = array_map( 'security', $value ); }else{ if( !get_magic_quotes_gpc() ){ $value = htmlspecialchars( $value, ENT_QUOTES); }else{ $value = htmlspecialchars( stripslashes( $value ), ENT_QUOTES); } $value = str_replace( "\\", "\\\\", $value ); } return $value; } Этот код поможет вам полностью защиниться от xss Использование: <? $_GET = security($_GET); $_POST = security($_POST); $_COOKIE = security($_COOKIE); $_SESSION = security($_SESSION); ?> 2 Quote Link to comment
Andrey Posted August 30, 2015 Report Share Posted August 30, 2015 (edited) Давайте рассмотрим пример: Допустим я отправляю на сервер такой запрос var data = { test: "какието текстовые данные", // Представьте что здесь много данных test1: "какието текстовые данные", // Представьте что здесь много данных test3: "какието текстовые данные", // Представьте что здесь много данных test4: "какието текстовые данные", // Представьте что здесь много данных test5: 3, test6: 6, test7: "какието текстовые данные", // Представьте что здесь много данных test8: "какието текстовые данные", // Представьте что здесь много данных test9: "какието текстовые данные", // Представьте что здесь много данных test10: 2 }; 1. Обратите внимание что test5, test6, test10 Это число и проверять в php его мы будем функцией intval() и лишний цикл таких полей ненужен. 2. array_map() я бы заменил на foreach так как она быстрее и менее потребляет CPU чем array_map() 3. get_magic_quotes_gpc() свыше php 5.4 всегда возвращает false и тем у кого php 5.4 или выше эта лишняя проверка вообще ненужна Итог моего мнения таков: Лично я бы не использовал в своих проектах эту функцию а проверял бы все поля отдельно! Но для ленивых эта функция в самый раз! Конкретно к функции проблем не имею она рабочая и автору спасибо за такую шару для новичков, но как говориться каждому свое! Edited August 30, 2015 by Andrey Quote Link to comment
api Posted August 30, 2015 Author Report Share Posted August 30, 2015 Давайте рассмотрим пример: Допустим я отправляю на сервер такой запрос var data = { test: "какието текстовые данные", // Представьте что здесь много данных test1: "какието текстовые данные", // Представьте что здесь много данных test3: "какието текстовые данные", // Представьте что здесь много данных test4: "какието текстовые данные", // Представьте что здесь много данных test5: 3, test6: 6, test7: "какието текстовые данные", // Представьте что здесь много данных test8: "какието текстовые данные", // Представьте что здесь много данных test9: "какието текстовые данные", // Представьте что здесь много данных test10: 2 }; 1. Обратите внимание что test5, test6, test10 Это число и проверять в php его мы будем функцией intval() и лишний цикл таких полей ненужен. 2. array_map() я бы заменил на foreach так как она быстрее и менее потребляет CPU чем array_map() 3. get_magic_quotes_gpc() свыше php 5.4 всегда возвращает false и тем у кого php 5.4 или выше эта лишняя проверка вообще ненужна Итог моего мнения таков: Лично я бы не использовал в своих проектах эту функцию а проверял бы все поля отдельно! Но для ленивых эта функция в самый раз! Конкретно к функции проблем не имею она рабочая и автору спасибо за такую шару для новичков, но как говориться каждому свое! автар OTTO11 Quote Link to comment
Алёша Posted August 30, 2015 Report Share Posted August 30, 2015 Думаю для текстовых значений будет достаточно trim(htmlspecialchars( $value, ENT_QUOTES)); Quote Link to comment
Andrey Posted September 30, 2015 Report Share Posted September 30, 2015 автар OTTO11 И что с того что автор ОТТО? Quote Link to comment
OTTO11 Posted October 4, 2015 Report Share Posted October 4, 2015 Специально зарегился тут. Чтоб ответить. Это первоначальная защита. После нее делать можно все что угодно. То что она обработает цифру НО защитит сам сайт от любого рода xss. Уж лучше пар десятитысячных секунд потратить на это, чем в попыхах потом искать где ж ломанули сайт в итоге. Что тебе мешает переписать ее на foreach и не использовать array_map() при чем тут CPU вообще не понятно. Если она съест на 5 байт пямяти это не такая трагедия по сравнению с потерей данных о пользователях. От себя добавлю: Ты занимаешься экономией на спичках. И создаешь проблемы там где их быть не может в принципе. 1 Quote Link to comment
GoogleChrome Posted May 16, 2016 Report Share Posted May 16, 2016 не понял из сообщений. эта защита, что в первом сообщении, нормальная? Quote Link to comment
FastCHAT Posted September 21, 2018 Report Share Posted September 21, 2018 В 05.10.2015 в 01:51, OTTO11 сказал: Специально зарегился тут. Чтоб ответить. Это первоначальная защита. После нее делать можно все что угодно. То что она обработает цифру НО защитит сам сайт от любого рода xss. Уж лучше пар десятитысячных секунд потратить на это, чем в попыхах потом искать где ж ломанули сайт в итоге. Что тебе мешает переписать ее на foreach и не использовать array_map() при чем тут CPU вообще не понятно. Если она съест на 5 байт пямяти это не такая трагедия по сравнению с потерей данных о пользователях. От себя добавлю: Ты занимаешься экономией на спичках. И создаешь проблемы там где их быть не может в принципе. Ну 5 байт у одного пользователя а в миллионов будет и гигабайты Quote Link to comment
FastCHAT Posted January 13, 2019 Report Share Posted January 13, 2019 Или вот так можно сделать function security($str) { $str = trim($str); $str = stripslashes($str); $str = htmlspecialchars($str); return $str; } Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.