Skip to content

Улучшить санитизацию пропсов #113

@ctizen

Description

@ctizen

Такая защита от дурака наверно недостаточна, так как тут например может быть массив или ещё какое значение приводимое к опасной строке.

Вот пример TS-компонента, при котором использование компонента в PHP может привести к небезопасной вставке строки:

@@ -4,10 +4,15 @@
 const injection = `<img src=x onerror=alert()>`;
 
 // @elephizeTarget
-export const EscapeHtmlChars = ({ children }: { children: React.ReactNode[] }) => {
+export const EscapeHtmlChars = ({
+  children,
+  // Dangerous string from input or server, received from props
+  mixedValue = [injection]
+}: { children: React.ReactNode[], mixedValue?: string[] }) => {
   const arr = [1, 2, 3, 4];
   return (
     <div className="App">
+      <div>{mixedValue}</div>
       <h1>Hello CodeSandbox</h1>
       <h2>Start editing to see some magic happen!</h2>
       {arr.map((v) => <span>{injection}{v}</span>)}

Конкретных решений не предложу.

Может тогда вынести этот вопрос отдельным issue?

Originally posted by @fix-fix in #112 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions