Security
Security
ReactJS Specified XSS
В ReactJS встроена защита, от разного рода XSS инъекций (auto escaping):
import './App.css';
function App() {
let XSS_PAYLOAD = "<img src=x onerror='alert(123)'/>";
return (
<div className="App">
<header className="App-header">
<div>STRING {XSS_PAYLOAD} ESCAPED</div>
</header>
</div>
);
}
export default App;И выглядит это так:

Однако, для разработчиков оставили способ отрисовать html+js в динамике, если это действительно необходимо:
PS: Ну и всякие documentWrite остаются, конечно:
Props Injections
В React есть возможность передать в компонент массив с переопределенными атрибутами. Если атакующий может контролировать этот массив, то он сможет определить ключ атрибута dangerouslySetInnerHTML и добавить туда свою нагрузку:
Один только нюанс: это сработает только в том случае, если в PROPS_INJ_PAYLOAD не содержится других ключей, иначе React/Webpack выведут ошибку:

Injectable Attributes
CSS in JS
У React есть возможность определять стили для компонентов прямо в JS коде, используя JS синтаксис:
Короч есть какая-та возможность делать css injection. Но я не разобрался. Надо лезть в документацию и смотреть разницу между class и className (один из них безопасный, другой — нет) и как делать Attribute Injection в эти поля.
Last updated