Функциональность для достижения этой цели была добавлена в версии 4.5.11
Это позволяет добавлять различные типы экранирования к выходу.
Это мой тест LinqPad:
var settings = new JsonSerializerSettings();
settings.StringEscapeHandling = StringEscapeHandling.EscapeHtml;
var output = JsonConvert.SerializeObject(new { Property = "" }, settings);
Debug.Print(output);
выводит
{"Property":"\u003cscript\u003ealert(\u0027o hai\u0027);\u003c/script\u003e"}
Так же, как отказ от ответственности, это не золотая пуля, чтобы исправить xss, но она должна помочь вам смягчить ее немного приведенный твой пример.
Вы можете создавать экземпляры других моделей из любой модели / контроллера, используя один из этих двух методов.
Если вы используете Cake 1.2:
App::import('model','Attribute');
$attr = new Attribute();
$attr->save($dataYouWantToSavetoAttribute);
Если вы используете Cake 1.1:
loadModel('Attribute');
$attr = new Attribute();
$attr->save($dataYouWantToSavetoAttribute);
В CakePHP 1.2 лучше использовать:
ClassRegistry::init('Attribute')->save($data);