【发布时间】:2021-11-18 23:15:14
【问题描述】:
我正在对 OASP 最佳实践进行审计,我的目标是识别从前端发送数据直到将数据保存到数据库中发生的所有主要安全线程。
上下文。
Json 数据:它是一棵根据 UI 操作增长/减少的树,JSON 是为前端函数格式化的。
前端:自定义 UI,它在 JS 对象中生成团队成员列表并从中追加/删除,数据输入不存储在任何 HTML 元素中以防止 XSS,但不确定是否存在任何潜在的 XSS代码:
创建元素的函数:
const newTeam = {
name,
emoji,
parent_id: parentTeamId,
children: [],
};
const newTree = insertTeam( newTeam );
将元素添加到嵌套组的功能:
export function insertTeam( team, root = tree ) {
if ( root.id === team.parent_id ) {
return {
...root,
children: [
...root.children,
{
...team,
// Using a simple time based ID for now.
id: `${ root.id }-${ Date.now() }`,
},
],
};
}
return {
...root,
children: root.children.map( ( childTree ) =>
insertTeam( team, childTree )
),
};
}
数据存储在表单的隐藏字段中,最终格式如下:
- Var_Dump
string(756) "{\"id\":1,\"name\":\"MyCustomGroup.\",\"emoji\":\"????\",\"parent_id\":null,\"children\":[{\"id\":2,\"name\":\"Food\",\"emoji\":\"????\",\"parent_id\":1,\"children\":[]},{\"id\":3,\"name\":\"Canine Therapy\",\"emoji\":\"????\",\"parent_id\":1,\"children\":[{\"id\":5,\"name\":\"Games\",\"emoji\":\"????\",\"parent_id\":3,\"children\":[{\"name\":\"rocket\",\"emoji\":\"????\",\"parent_id\":5,\"id\":\"5-1632455609334\",\"children\":[]}]}]},{\"name\":\"frog\",\"emoji\":\"????\",\"parent_id\":1,\"id\":\"1-1632456503102\",\"children\":[]},{\"name\":\"bear\",\"emoji\":\"????\",\"parent_id\":1,\"id\":\"1-1632456578430\",\"children\":[{\"name\":\"a\",\"emoji\":\"a\",\"parent_id\":\"1-1632456578430\",\"children\":[],\"id\":\"1-1632456578430-1632665530415\"}]}]}"
后端:后端是一个 Wordpress 插件,用于插入我正在使用的数据 $wpdb->insert 处理传递的字符串并用于清理/清理我正在使用的:
wp_kses( $obj, array() )
我不是安全专家,但我可以检测 XSS 攻击的线程,我还缺少什么?另外,如果大家有什么建议也欢迎。谢谢。
【问题讨论】:
标签: mysql wordpress security xss owasp