답변
선택할 수있는 것이 많지만 모든 정직함에서 가장 좋은 도구는 교육입니다. 직접 예방하는 방법. 정상적인 Framework 클래스 라이브러리에 내장 된 도구는 제대로 사용하면 완벽하게 적합합니다.
모든 데이터베이스 호출에 대해 매개 변수화 된 쿼리 및/또는 저장 프로 시저를 사용하는 것이 가장 좋습니다.
그러나 Microsoft Patterns and Practices 라이브러리에서 제공하는 Microsoft.Practices.EnterpriseLibrary.Data 클래스를 사용한다고합니다. 우리가 사용하는 것들은 조금 구형이지만, 여전히 훌륭하게 일을합니다. 또한 주입 방지 기능을 제공하며 데이터 액세스를 단순화합니다. 그러나 그것만이 직업을위한 도구 일뿐만 아니라 꼭 필요한 도구는 아닙니다.
현재 패턴 및 관행 라이브러리에 대한 최신 정보는 here입니다.
문제를, 모든 변경이 물건을 매개 변수가있는 쿼리에 적용하는 것은 정말 고통 스럽습니다. 그래서 기본 페이지에 앉아서 요청을 정리할 라이브러리가 있다고 생각했습니다. – StringBuilder
Nope. 죄송합니다. 제가 알고있는 CSRF를위한 도구가 있지만 SQL Injection을 설명하는 것과는 다릅니다. 죄송합니다. SQL Injection 취약점 (RDBMS에 따라 다름)의 유행 및 잠재적 손상을 감안할 때 데이터 액세스 논리를 다시 작성하는 것이 좋습니다. 거기에 무엇이든 신뢰할 수없는 입력을 사용하여 모든 쿼리를 다시 작성해야합니다. – David
<?PHP
FUNCTION anti_injection($user, $pass) {
// We'll first get rid of any special characters using a simple regex statement.
// After that, we'll get rid of any SQL command words using a string replacment.
$banlist = ARRAY (
"insert", "select", "update", "delete", "distinct", "having", "truncate", "replace",
"handler", "like", " as ", "or ", "procedure", "limit", "order by", "group by", "asc", "desc"
);
// ---------------------------------------------
IF (EREGI ("[a-zA-Z0-9]+", $user)) {
$user = TRIM (STR_REPLACE ($banlist, '', STRTOLOWER ($user)));
} ELSE {
$user = NULL;
}
// ---------------------------------------------
// Now to make sure the given password is an alphanumerical string
// devoid of any special characters. strtolower() is being used
// because unfortunately, str_ireplace() only works with PHP5.
IF (EREGI ("[a-zA-Z0-9]+", $pass)) {
$pass = TRIM (STR_REPLACE ($banlist, '', STRTOLOWER ($pass)));
} ELSE {
$pass = NULL;
}
// ---------------------------------------------
// Now to make an array so we can dump these variables into the SQL query.
// If either user or pass is NULL (because of inclusion of illegal characters),
// the whole script will stop dead in its tracks.
$array = ARRAY ('user' => $user, 'pass' => $pass);
// ---------------------------------------------
IF (IN_ARRAY (NULL, $array)) {
DIE ('Invalid use of login and/or password. Please use a normal method.');
} ELSE {
RETURN $array;
}
}
[1]: http://psoug.org/snippet/PHP-Anti-SQL-Injection-Function_18.htm
[1]: http://psoug.org/snippet/PHP-Anti-SQL-Injection-Function_18.htm
- 1. C/C을 찾고 ++ 언어와 표준 라이브러리 사양
- 2. 의존성 주입 모범 사례 및 안티 패턴
- 3. SQL Server의 블라인드 SQL 주입 취약점 - ASP.Net
- 4. C을 찾는 ++ 구현()`
- 5. ASP.NET에서 SQL 주입 방지
- 6. SQL 주입
- 7. SQL 주입
- 8. ASP.NET 모듈 종속성 주입
- 9. ASP.Net 용 안티 XSS 라이브러리가 있습니까?
- 10. 잘못된 SQL Server 안티 인젝션
- 11. 방지 SQL 주입
- 12. 마이크로 소프트 안티 - 크로스 사이트 스크립팅 라이브러리
- 13. HTML 위생에 MS 안티 XSS 라이브러리 사용하기
- 14. Linq에서 SQL 및 SQL 주입
- 15. SQL 일치 쿼리에서 SQL 주입
- 16. SQL 어셈블리 및 SQL 주입
- 17. "주입"Request.Url.Hosts - ASP.net MVC
- 18. ASP.NET MVC3 조건부 주입
- 19. ColdFusion에서 SQL 주입 방지
- 20. MVC에서 SQL 주입 제어
- 21. SqlCeResultSet을하고 SQL 주입
- 22. INSERT시 SQL 주입
- 23. SQL 주입 결과
- 24. Ibatis에서 SQL 주입 방지
- 25. MSACCESS SQL 주입
- 26. 준비된 문장으로 SQL 주입?
- 27. SQL 주입 보호?
- 28. MySqlBulkLoader SQL 주입 방지
- 29. SQL 주입 취약점 발견
- 30. PHP SQL 주입 보호
당신이 그것을 확인하실 수 있습니다 빠른 해결책이 있습니다 : http://forums.asp.net/t/1254125.aspx 프로젝트가 alrady 기록 –