Допустим, у меня есть Text
, это текстовая область POST. В этом поле я должен быть в состоянии поместить все, что я хотел бы написать. Например, XSS, SQL и другие возможные плохие коды. Для разметки я буду использовать BBCode, поэтому я хочу отображать код, не заставляя его работать.
Единственное, чего я, конечно, хочу избежать, так это того, что БД облажается! Есть ли чрезвычайно безопасный способ сделать это?
Шаги, которые я на самом деле делаю:
Укажите Content-Type и Charset
Content-Type: text/html; charset=UTF-8
Ограничьте ввод.
Ex.: Max 500 characters
Используйте htmlentities()
$GoodText = htmlentities($Text, ENT_QUOTES, "UTF-8");
Используйте mysql_real_escape_string()
$GoodText = mysql_real_escape_string($GoodText);
Хранить в БД
$db->store($User, $GoodText);
Насколько я читал, шаги 3 и 4 совершенно одинаковы, но я хотел бы получить объяснение.
В любом случае, это рабочий метод?
Должен ли я также использовать токены для POST-форм?