【发布时间】:2020-08-03 04:42:44
【问题描述】:
如果用于过滤用户输入,您认为这些功能足以防止 XSS 吗?我真的应该自己制作或使用 XSS 库吗?请给我建设性的批评。谢谢大家。
/**
* Escape HTML string to prevent XSS.
*/
export const escapeHtml = (string: string): string => {
if (isString(string)) {
const entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': """
};
return string.slice(0, string.length).replace(/[&<>"]/g, (s: string): string => entityMap[s]);
}
return string;
};
/**
* Loop over Object to escape each of its value to prevent XSS.
*/
export const escapeHtmlQueryObject = (obj: { [string]: string }): { [string]: string } => {
let result = obj;
if (obj && isObject(obj)) {
result = Object.keys(obj).reduce((res: { [string]: string }, key: string): {
[string]: string
} => {
res[key] = escapeHtml(obj[key]);
return res;
}, {});
} else if (process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test") {
console.error(`FilterXSSQueryObject can't process ${obj.toString()}`);
}
return result;
};
【问题讨论】:
-
朋友不要让朋友自己写XSS过滤器。不是在二十一世纪。请查看youtube.com/watch?v=SXbrgvAK_5U,不要再这样做了。
标签: javascript html security xss