2015-01-13 3 views
1

나는 콘텐츠 편집 가능 div와 라이브러리 medium.js를 사용하는 프로젝트에서 작업 중입니다. 하지만 스크립트 삽입을 방지하지 못합니다. 내 div에 어떤 ​​종류의 스크립트 삽입을 방지하는 가장 좋은 방법은 무엇입니까?콘텐츠 편집 가능 div에서 스크립트 주입을 방지하는 가장 좋은 방법

+0

백엔드에서 허용되는 값을 설정하십시오. 임의 입력의 '평가'를 피하십시오. 서버 측에서 무엇을 사용하고 있습니까? – lfender6445

+0

@ lfender6445 : 실제로 프런트 엔드에서 처리해야합니다. Enter를 누르면 스크립트가 실행됩니다. 더 많이 렌더링하는 동안 스크립트가 실행됩니다. 유 사업부에 아무것도 입력을 시작하면, 그 다음

를가된다 : 내가 가지고 medium.js 라이브러리를 사용하고 – Shivi

답변

0

innerHTML 대신 div의 textContent 속성을 업데이트하십시오. 현재 사용자가 div의 콘텐츠를 어떻게 수정하게합니까? 코드를 게시 할 수 있습니까?

+0

이 처음 div에

hiiii

Shivi

0

편집 된 정보를 서버에 보내서 데이터베이스에 저장하여 나중에 웹 사이트에 저장하고 렌더링한다고 가정합니다. 그리고 사용자가 입력에 특정 HTML 코드를 사용할 수있게하고 싶습니까?

그런 경우, "HTML 살균기"서버 측을 구현해야합니다. PHP에는 HTMLPurifier, 파이썬에는 Bleach, 루비에는 sanitize module이 있습니다. 그것들은 단지 예일뿐입니다. 더 많은 것들이 있습니다. 여러분은 또한 (신중하게!) 자신의 소독제를 쓸 수 있습니다. 새 니타 이저는 문자열을 필터링하여 일반 텍스트 및 HTML 태그 & 속성 만 스크립트 기능없이 데이터베이스에 입력합니다. 최선의 접근 방법에 대한 아이디어는 Wikipedia - HTML Sanitization을 참조하십시오.

콘텐츠를 편집 할 때 자바 스크립트 필터링을 사용하면 충분하지 않습니다. 공격자는 웹 사이트를 분석하여 데이터베이스에 코드를 남겨 두어 서버에 콘텐츠를 게시 할 수 있기 때문에 충분하지 않습니다.

그러나 콘텐츠가 제공 될 때 데이터베이스에 허용하고 위생적으로 표시 할 수 있으므로 표시되지는 않지만 제출할 때 필터링하는 것이 좋습니다. 표시 할 HTML 클라이언트 측을 위생 처리하려면 Google Caja 라이브러리와 같은 것을 사용할 수 있습니다. 이러한 경로를 취하는 경우 다른 프런트 엔드를 구현 한 경우 데이터베이스의 콘텐츠를 살균하십시오.

다른 옵션은 HTML 입력을 모두 비활성화하는 것입니다 (텍스트 만 허용하고 모든 태그를 제거하는 것). 또는 StackExchange 웹 사이트 및 Reddit do와 같은 인기있는 사이트와 같이 인기있는 Markdown 구문을 구현할 수 있습니다. 이전 BBcode 메소드는 PHP에서 항상 옵션으로 제공되며, 여전히 포럼에서 리치 텍스트 입력 메소드로 널리 사용됩니다.