, 검증 작업이며, 그것은 매우 중요한 일이다. 서버 와이드 설정을 할 수 있다면 모든 상황에 맞게 일반화 할 수 있습니다. 특정 필드에 대한 유효성 검사를 수행 할 때 공격 범위를 좁힐 수 있습니다. 예를 들어, 세 개의 필드가있는 양식이 있다고 가정합니다. 이름, 신용 카드 번호, 사회 보장 번호. 하나의 서버 와이드 설정을 사용하면 세 가지 유형의 입력을 모두 허용 할 정도로 충분히 일반적이어야합니다. 자신의 유효성 검사를 통해 각 필드에 대해 매우 구체적 일 수 있으며 특정 문자 집합 만 허용 할 수 있습니다. 이름 - 알파벳 문자 및 공백 만 허용, 신용 카드 번호 - 숫자, 공백, 대시 만 허용하고 mod 규칙, 사회 보장 번호를 준수해야 함 - 3-2-4 형식의 숫자 및 대시 만 허용합니다. 그 밖의 것은 허용되지 않습니다.
즉, 나는 "글로벌 스크립트 보호"규칙을 사용자 정의 할 수 있다는 점을 지적하고자했습니다. 이 설정은 서버 구성의 cf_root/lib/neo-security.xml
파일 또는 JEE 구성의 cf_root/WEB-INF/cfusion/lib/neo-security.xml
파일에 정의 된 정규 표현식을 변수 값에 적용하여 작동합니다. CrossSiteScriptPatterns
변수의 정규 표현식을 수정하여 ColdFusion이 대체하는 패턴을 사용자 정의 할 수 있습니다.
기본적으로 의미
<var name='CrossSiteScriptPatterns'>
<struct type='coldfusion.server.ConfigMap'>
<var name='<\s*(object|embed|script|applet|meta)'>
<string><InvalidTag</string>
</var>
</struct>
</var>
, 글로벌 스크립트 보호 메커니즘은 <object
또는 <embed
또는 <script
또는 <applet
또는 <meta
을 포함하는 문자열을 찾고 <InvalidTag
로 대체된다
기본 정규 표현식은 다음과 같이 정의된다 . 원하는 경우 더 많은 사례를 찾기 위해 정규식을 향상시킬 수 있습니다.
는 cfwheels 1.1 응용 프로그램을 구현으로 Protecting variables from cross-site scripting attacks section on this page
무엇이든 출력 할 때 나는 출력하는 내용에 따라 다음 함수 중 하나를 사용하는 경향이 있습니다 :'h()'('HtmlEditFormat()'의 CFWheels 별칭),'NumberFormat()',''DateFormat '. 이것이 garbage-in-garbage-out 문제를 해결하지 못한다는 것을 알았지 만 HTML을 이스케이프하기 위해 뷰 템플릿을주의해야합니다 (물론 HTML을 출력하고 싶을 때 제외). –
아마도이 대답의 또 다른 가능성 - http://stackoverflow.com/a/26060722/1636917 - CFlib.org [isXss] (http://www.cflib.org/index.cfm?event=)에 UDF가 있습니다. page.udfbyid & udfid = 2116) 값을 검사하여 xss인지 확인합니다. –