2011-11-05 2 views
-7

나는 C#으로 프로그램을 작성했으며, 그 일이 발생할 때마다 MySQL db 테이블의 정수를 증가 시키길 원한다. 하지만 C# 응용 프로그램에서 데이터베이스에 직접 연결하고 싶지 않아 오픈 소스 프로그램이므로 사용자 이름과 암호 등으로 뭔가를해야합니다.오픈 소스 프로젝트에서 만들어진 웹 서비스 호출을 안전하게하는 방법은 없나요?

그래서 나는 아마도 요청 될 때마다 그 번호를 연결하고 증가시키는 PHP 스크립트를 만들 수 있습니다. 그런 다음 C# WebClient를 사용하여 PHP 스크립트를 호출 할 수 있습니다 (PHP 스크립트는 성공 또는 오류 문자열을 반환합니다).

그러나 문제는 사용자가 소스 코드에 들어가서 그 URL은 정확하고 번호가 정확하지 않으므로 그것을 악용합니다.

그래서 제가보고있는 것은 오픈 소스를 통해서도 내 웹 서비스를 안전하게 유지할 수있는 안전하고 고급스럽지 않은 방법입니다.

누구나 소스 코드를보고 사용자를 괴롭히지 못하게하는 것을 포함하는 아이디어가 있습니까? :)

+3

C# 응용 프로그램은 오픈 소스이므로 테이블의 필드를 증가 시키려면 일부 응용 프로그램은 데이터베이스를 소유하지만 일부 사용자는 해당 응용 프로그램을 악용하지 못하도록하고 싶습니다. DB? 높은 수준의 목표 (예 : 사용을 추적하고자 함)를 설명해 주시겠습니까? – Mateo

+0

제발, 당신이 말하고자하는 바를 명료하게하십시오. 지금 당장 당신의 질문은 의미가 없습니다. – Optimus

+0

오픈 소스로 만들 수는 없지만 동시에 비밀리에 전화로 가져올 수는 있습니다. 마테오가 말한대로 실제로 무엇을하려고합니까? –

답변

1

실제로 연결하지 않고는 데이터를 변경할 수 없습니다. 그것은 요구 사항으로는별로 의미가 없습니다.

편집 : 나는 질문을 오해,하지만 지금은 ...

내가 진정으로 안전 할 것입니다 방법을 알고하지 않습니다 얻을. 그들은 소스를 가지고 있기 때문에 깨질 수없는 데이터를 난독 화하거나 암호화하는 실제적인 방법이 없습니다. 그들은 항상 웹 호출이 만들어 질 때까지 단계별로 응용 프로그램을 디버깅하고 URL을 얻을 수 있습니다.

+0

물론 연결하지 않아도 데이터를 변경할 수는 없지만 mysql db에 대한 직접 연결을 제외하고 데이터를 변경하는 방법에 대한 조언이 필요했습니다. – fgblomqvist

+0

@toxicious 네가 원격 C# 응용 프로그램에서 연결하는 대신 웹 페이지 (데이터베이스 연결을 할 것임)에 연결하는 것을 언급하고 있다는 것을 알지 못했다. 분명히 웹 사이트를 게이트웨이로 사용하는 것이 데이터베이스를 공공 장소에 노출시키는 것보다 좋습니다. – Fosco

+0

알겠습니다. 음, 나는 무방비 상태의 웹 사이트 솔루션과 함께 가고, 우리가 너무 많은 방해 행위없이 세계에 살기를 바랍니다. 그것은 결국 모든 통계와 중요한 아무것도 아니에요 :) – fgblomqvist

0

직접 연결 또는 PHP 스크립트 요청에 상관없이 악용 사례를 피하기 위해 어떤 종류의 인증 시스템이 필요합니다. 소스 코드에서 사용자/암호 조합을 하드 코딩하지 않으려는 경우 일반적인 해결책이 있습니다. 데이터를 외부 구성 파일로 옮기고 해당 파일의 템플리트를 제공하고이를 repo에 추가하십시오.

user = dummy-username 
password = dummy-password 

당신이 REPO에 추가하는 파일입니다 :

는 예를 들어, 다음과 같습니다 파일 parameters.ini.dist의 이름을 수 있습니다.

프로그램을 사용하려는 사람은 누구나 parameters.ini.dist에서 parameters.ini까지 복사하고 더미 값을 실제 값으로 바꿉니다. 이 파일은 프로그램에서 읽는 파일이므로 repo에서 무시해야합니다.

+0

그것은 작동합니다. 나는 내 질문에 대해 더 잘 설명하지 못해 죄송합니다. 다른 의견에서 말했듯이, 나는 사용법을 추적하고 싶다. 따라서 각 사용자에게 사용자 이름과 암호를 부여하면 작동하지 않습니다. 어쨌든 좋은 팁! – fgblomqvist

관련 문제