Специальные символы '<', '$', '=' должны экранировать все текстовые поля рендера, чтобы избежать атак XSS HTML / React. js - PullRequest
0 голосов
/ 14 апреля 2020

Я использую 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>
            );
          }
        }

Ожидаемое поведение: Должен иметь возможность кодировать или экранировать текст с символами '<', '$', '=', '>'

...