ADO.NET에서는 명령 개체에 매개 변수를 추가하여 사용자 입력을 SQL 쿼리에 안전하게 추가 할 수 있습니다. SQL 쿼리와 공통된 다른 조건 자에 해당하는 것은 무엇입니까?ADO.NET에서 변경 테이블을 안전하게 선택하여 쿼리를 만들려면 어떻게해야합니까?
본질적으로 매우 제한된 O-R 매퍼 및 SQL 생성기 (메타 정보 및 해당 메타 데이터를 준수하는 다른 데이터베이스가있는 데이터베이스 주위에 집중적으로 초점을 맞춘 프로그램)를 작성 중입니다. 합니다 (criteria
같이) 그대로 신뢰할 수있는 사용자 (내 회사에서 다른 개발자)에 의해 내 프로그램에 입력됩니다 다른 데이터가 입력되는 동안,
string sql = "select " + USER_SELECTED_COLUMNS +
" from " + USER_SELECTED_TABLE +
" where " + USER_CRITERIA;
그것의 일부 : 결과적으로 내가 좋아하는 물건을 호출 할 수 있어야합니다 신뢰할 수없는 사용자 (고객)가 검색을 통해 내 프로그램에 넣을 수 있습니다.
나는이 프로그램을 안전하게 만들고 싶습니다. 현재 USER_SELECTED_COLUMNS
이 명령 매개 변수로 대체되었지만 표준 및 표와 동일한 항목을 찾을 수 없었습니다. (또는 주문 별 열). 비 선택 술어에 사용할 수있는 SqlParameter
과 유사한 ADO.NET 기능이 있습니까?
사용의 화이트리스트, NOT 블랙리스트 :
이것은 SQL 주입의 악몽입니다. 신중하게 진행하고 앱에서 적절한 펜 테스트를 수행하십시오. – Jamiec
예, 알고 있습니다. 따라서 질문. 다른 한편, 우리 고객은 16 년 동안 100 % 주입 공격에 취약한 시스템 버전을 사용하고 있습니다. 그것은 비즈니스 - 고객 관계에 대한 아름다운 것입니다. 하지만 : VB6/ADO에서 C#/ADO.NET으로 마이 그 레이션을하고 있기 때문에 추가 보안이 손상되지는 않을 것이라고 생각했습니다. – Crisfole