특정 서버에 문제가 있습니다. 응용 프로그램에 게시 된 모든 더하기 기호는 공백으로 대체됩니다. POST 및 GET과 해당 사이트의 모든 페이지에 있습니다. 테스트 케이스로
나는이 작은 페이지 (그것이 ASP 서버의)이 있습니다% 2B 대신에 공백으로 디코딩
<html>
<body>
<form method="post">
<input type="text" name="Plus" id="Plus" />
<input type="submit" />
</form>
Previous Value: <%= request("Plus") %><br />
Query String: <%= request.querystring %>
</body>
</html>
이 잘 작동 다른 모든 서버에서,하지만 하나의 서버 흑자 공백으로 대체됩니다.
예 : "1 2+3
"- 요청 ("Plus")은 "1 2 3
"이고 검색어 문자열은 "1+2+3
"입니다. 좋지 않다. 다른 문자가 올바르게 디코딩되는 것 같습니다.
누군가가 공격으로부터이 서버를 '강화'하려고 했으므로 IIS 옵션이 켜져있을 수 있습니다 (ISAPI 필터를 제거했지만).
감사합니다.
UPDATE : 그것은 설치된 다른 필터, http://www.codeplex.com/IIS6SQLInjection에서 SQL 주입 필터 ISAPIClipSQLInjection.dll 거기 밝혀졌습니다.
필터는 버그입니다 - POST에서 유효한 문자를 대체하고 GET : 더하기 기호가 공백으로 대체된다
- 을 "1 % 2B2"-> "1 + 2"동일한 "1 2" 로
- 세미콜론은 쉼표로 바뀝니다. "hello;" -> "hello,"
최신 버전의 필터 (2.0b)는이 문제를 해결하지 못하지만 특정 페이지를 제외 할 수 있습니다. 프로덕션 환경에 설치 되었기 때문에 필터를 제거하지 않기로 결정했습니다. 자바 스크립트를 사용하여 모든 플러스 값을 "+ "
(공백과 세미콜론이 아닌)으로 변경했습니다.
최적의 솔루션은 아니지만 보스가 원했던 것입니다.
훌륭한 솔루션은 아니지만 작동합니다. 그 작은 패치가 우리가 결국 한 일이기 때문에 나는 당신의 해결책을 받아 들일 것입니다. 어쨌든 고마워. – Kobi
너무 개인적인 것을 얻지는 않지만 이스라엘에 살고있는 것으로 나타났습니다. 살아있는 한 그것이 어찌 그곳에 있습니까? 우리 미디어가 그려 놓은 것만 큼 나쁜 것일까 요? 나는 문화와 사람들을 사랑하기 때문에 곧 나가고 싶습니다. – Eric
큰 재미이지만, 이것에 관해서는 이야기 할 곳이 거의 없습니다. 어떤 식 으로든 저에게 연락 주시기 바랍니다 (내 블로그에는 몇 개의 링크가 있습니다) – Kobi