gpt4 book ai didi

php - CakePhp:避免 XSS 攻击保持蛋糕的易用性

转载 作者:行者123 更新时间:2023-12-02 06:08:00 25 4
gpt4 key购买 nike

我喜欢 cakePhp 的一个原因是我们可以轻松地生成一个允许我们保存的编辑表单。

例如在 Controller 中:

function add() {
if (!empty($this->data)) {
$this->Post->create();
if ($this->Post->save($this->data)) {
$this->Session->setFlash(__('The post has been saved', true));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The post could not be saved. Please, try again.', true));
}
}
$users = $this->Post->User->find('list');
$this->set(compact('users'));
}

问题在于我们的字段容易受到 XSS(跨站点脚本)攻击。我知道“Sanitize::Clean”方式,但我对此有疑问:这意味着我们必须在保存对象之前对所有字段执行此操作。如果我们添加一个字段呢?我们应该继续我们所有的代码来检查我们是否对其进行了清理??有没有办法在不指定任何字段的情况下说“在保存之前清理此对象”?

谢谢!

最佳答案

正如 andreas 正确指出的那样,存储原始 HTML 并且只对输出进行清理是普遍接受的最佳做法(例如,通过存储原始输入,它可以帮助跟踪谁发布了恶意内容等)。

要在 View 中清理,您应该使用 CakePHP 便利函数 h($string)这是htmlspecialchars的捷径,这将使所有 XSS 尝试完全无害。

编辑 - 这不会从物理上删除 XSS 代码,而只是以不会损害您的应用程序的方式呈现它。

echo h('<script>alert("xss");</script>');

会产生&lt;script&gt;alert(&#039;xss&#039;);&lt;/script&gt;

关于php - CakePhp:避免 XSS 攻击保持蛋糕的易用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com