Бортовой журнал Ктулху

Фильтрация текста в PHP

Шпаргалка по функциям фильтрации текста, в частности, при приеме данных для подготовки SQL-запроса но и для других целей.

Входные данные в таком виде:

 

print("Input string");

var_dump($input);

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlspecialchars');

var_dump(htmlspecialchars($input));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlspecialchars + flag ENT_QUOTES');

var_dump(htmlspecialchars($input, ENT_QUOTES,"UTF-8"));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlspecialchars + flag ENT_NOQUOTES');

var_dump(htmlspecialchars($input, ENT_NOQUOTES));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlspecialchars + flag ENT_IGNORE');

var_dump(htmlspecialchars($input, ENT_IGNORE));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('addslashes + stripslashes + str_replace');

var_dump(str_replace(["\'", '\"'], ">>",addslashes(stripslashes($input))));

 

';KkhjlhnKHK>>>>>>nk1#%$#%$3>>>>Bobby>>;DROP TABLE users; -- '

 

 

print('htmlspecialchars + flag ENT_DISALLOWED');

var_dump(htmlspecialchars($input, ENT_DISALLOWED));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('addslashes + stripslashes');

var_dump(addslashes(stripslashes($input)));

 

';KkhjlhnKHK\'\'\'nk1#%$#%$3\'\"Bobby\';DROP TABLE users; -- '

 

 

print('filter_var + FILTER_SANITIZE_STRING');

var_dump(filter_var($input,FILTER_SANITIZE_STRING));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlentities');

var_dump(htmlentities($input));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlentities + ENT_QUOTES + UTF-8');

var_dump(htmlentities($input, ENT_QUOTES ,'UTF-8'));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlentities + ENT_QUOTES + cp1251 ');

var_dump(htmlentities($input, ENT_QUOTES ,'cp1251'));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

 

print('htmlentities + ENT_SUBSTITUTE');

var_dump(htmlentities($input, ENT_SUBSTITUTE));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

print('htmlentities + ENT_SUBSTITUTE + + UTF-8');

var_dump(htmlentities($input, ENT_SUBSTITUTE, 'UTF-8'));

 

';KkhjlhnKHK'''nk1#%$#%$3'"Bobby';DROP TABLE users; -- '

 

Короче говоря, можно пользоваться такой фильтрацией для многих целей но для запросов к БД лучше использовать встроенный конструктов запросов Yii2 или функцию mysqli_real_escape_string.