мое приложение rails 3 должно принимать данные html и отображать их, но безопасно! как свести к минимуму риски безопасности?

Одной из особенностей моего приложения является разрешение пользователю добавлять свою кнопку facebook или twitter в свой профиль.

«Очевидный» подход — дать им поле text_area, попросить их вставить «код» facebook или twitter, а затем в их профиле отобразить raw fbk_button_field и raw twitter_button_field

(Facebook — это iframe, а twitter — это ссылка на удаленный ajax).

Но очевидно, что пользователь может вставить что угодно в это поле, и я предполагаю, что это довольно плохая вещь, которая оставляет систему открытой для множества эксплойтов.

Так как же правильно разрешить пользователям добавлять «социальные кнопки» в свой профиль, не имея возможности вместо этого вставить эксплойт?


person jpw    schedule 25.02.2011    source источник


Ответы (1)


Самым безопасным решением было бы попросить их войти в свою учетную запись Twitter или Facebook и воссоздать кнопку самостоятельно. Таким образом, вы можете легко удалить HTML из имени учетной записи, и вам не о чем беспокоиться.

Хотя приведенное выше идеально, вы также можете использовать что-то вроде гема sanitize для удаления HTML-тегов и атрибутов.

person Zachary Anker    schedule 28.02.2011
comment
благодаря. однако мы не можем создать для них кнопки (потребуется, чтобы они предоставили нам свои учетные данные), и если мы используем sanitize для удаления, это, конечно, разорвет ссылки. - person jpw; 03.03.2011
comment
Если я не ошибаюсь, вы говорите о twitter.com/about/resources/tweetbutton тип кнопок, правильный? Вам не нужны учетные данные, чтобы создать один из них. Sanitize можно внести в белый список, вы можете указать ему не удалять HTML-теги с атрибутом in и href. - person Zachary Anker; 03.03.2011