Я использую React-формы с большинством полей типа ввода в качестве текста. Он должен экранировать или кодировать символы '<', '$', '=', '>', чтобы избежать атак XSS.
Текущее поведение: я использую аналогичный подход демонстрационного приложения W3, где, если мы введите '<' script '>' как текст и отправьте. Он принимает параметры, которые подвержены атаке XSS:
https://www.w3schools.com/react/showreact.asp?filename=demo2_react_forms_submit
class MyForm extends React.Component {
constructor(props) {
super(props);
this.state = { username: '' };
}
mySubmitHandler = (event) => {
event.preventDefault();
alert("You are submitting " + this.state.username);
}
myChangeHandler = (event) => {
this.setState({username: event.target.value});
}
render() {
return (
<form onSubmit={this.mySubmitHandler}>
<h1>Hello {this.state.username}</h1>
<p>Enter your name, and submit:</p>
<input
type='text'
onChange={this.myChangeHandler}
/>
<input
type='submit'
/>
</form>
);
}
}
Ожидаемое поведение: Должен иметь возможность кодировать или экранировать текст с символами '<', '$', '=', '>'