2012-03-27 3 views
-1

누구나 Asp.NET 1.1과 같은 라이브러리를 제안 할 수 있습니까?안티 Sql 주입 라이브러리 C#을 Asp.NET

감사합니다.

+0

당신이 그것을 확인하실 수 있습니다 빠른 해결책이 있습니다 : http://forums.asp.net/t/1254125.aspx 프로젝트가 alrady 기록 –

답변

0

선택할 수있는 것이 많지만 모든 정직함에서 가장 좋은 도구는 교육입니다. 직접 예방하는 방법. 정상적인 Framework 클래스 라이브러리에 내장 된 도구는 제대로 사용하면 완벽하게 적합합니다.

모든 데이터베이스 호출에 대해 매개 변수화 된 쿼리 및/또는 저장 프로 시저를 사용하는 것이 가장 좋습니다.

그러나 Microsoft Patterns and Practices 라이브러리에서 제공하는 Microsoft.Practices.EnterpriseLibrary.Data 클래스를 사용한다고합니다. 우리가 사용하는 것들은 조금 구형이지만, 여전히 훌륭하게 일을합니다. 또한 주입 방지 기능을 제공하며 데이터 액세스를 단순화합니다. 그러나 그것만이 직업을위한 도구 일뿐만 아니라 꼭 필요한 도구는 아닙니다.

현재 패턴 및 관행 라이브러리에 대한 최신 정보는 here입니다.

+0

문제를, 모든 변경이 물건을 매개 변수가있는 쿼리에 적용하는 것은 정말 고통 스럽습니다. 그래서 기본 페이지에 앉아서 요청을 정리할 라이브러리가 있다고 생각했습니다. – StringBuilder

+0

Nope. 죄송합니다. 제가 알고있는 CSRF를위한 도구가 있지만 SQL Injection을 설명하는 것과는 다릅니다. 죄송합니다. SQL Injection 취약점 (RDBMS에 따라 다름)의 유행 및 잠재적 손상을 감안할 때 데이터 액세스 논리를 다시 작성하는 것이 좋습니다. 거기에 무엇이든 신뢰할 수없는 입력을 사용하여 모든 쿼리를 다시 작성해야합니다. – David

0

Link to Anti-Injection SQL

<?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