시스템의 로그인 단위를 테스트하려고했습니다. 내 시스템은 다음과 같이 설계 -SQL, Microsoft SQl
사용자가 사용자 ID 입력하면 - 통과 ABCD와 암호 다음 서버는 이러한 매개 변수를 사용하고 SQL 명령을 준비하고 마이크로 소프트 데이터베이스 -
select password from UserInformationTable where userid = 'abcd';
반환 값으로 발사 주어진 패스워드 패스와 비교되어 결과가 클라이언트로 보내진다.
내가 성공적으로 다음과 같은 방법을 사용하여 시스템에 침입 -
사용자는 사용자 ID를 입력 - <abcd1 or drop table UserInformationTable
>. 이 작업이 완료되고 내 전체 UserInformationTable이 삭제되었습니다.
해킹 문제를 해결할 수있는 적절한 방법이 있습니까? 한 가지 방법은 사용자 ID에서 '또는'하위 문자열을 감지하는 것이지만 매우 좋지 않습니다. 내가 아니오를 제한 할 수있는 방법이 있습니까? SQL에서 문에서 쿼리의?
감사 및 감사 Radz
실제로 매개 변수를 사용하거나 단순히 쿼리 문자열을 연결하고 있습니까? 또한이 MySQL 또는 SQL Server가 있으며 사용중인 언어는 무엇입니까? –
SQL 인젝션에 대해 읽어보십시오. 그런 다음 평문 암호를 저장하는 것이 왜 나쁜지 읽어보십시오. 그런 다음 오늘날의 CodingHorror.com에서 인증을 위해 타사를 활용하는 것이 좋은 방법인지 읽어보십시오. – Joe
SqlParameters [helplink] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx)를 사용해야합니다. – Raghuveer