WINDOWS+DLL+ASP --> LINUX+LIB+PHP 로 환경이 바뀌었을때..

nunobabo의 이미지

원래 asp페이지에서 VB로 만든 DLL의 함수를 호출하는 식의 방식으로 계속 진행되어 오다 플랫폼을 리눅스로 바꾸는 바람에 C로 LIB 파일을 만들어 PHP 페이지에서 함수를 호출해야 하는 상황으로 되어 버렸습니다.
계속 윈도우서버 기반의 프로그램만 만들다 갑자기 리눅스로 전환되어 어떻게 해야 할지 모르겠네요...
모듈화를 하는 것은 회사의 데이터베이스 정보와 서비스 관련 중요한 정보가 들어 있어서 꼭 필요 한 것인데 LIB파일이 DLL만큼 코드은닉을 확실히 할 수 있는지요?
또 PHP에서 LIB 파일의 함수를 호출하는 방식은 순전히 제 생각인데 이게 가능하긴 한가요? 아니면 더 좋은 방법이 있으면 소개해 주시면 감사하겠습니다.

doraq의 이미지

코드를 숨기는게 목적이라면 나쁘진 않지만 그 DLL안에
설마 패스워드나 아이디 같은게 들어있는건 아니죠?
그렇다면 은닉 하나도 안되는거 아시는거죠?
> strings xxx.dll 하면 내부의 스트링 다 나오니까요.

그리고 그냥 php 코드로 짜고(어짜피 서버측에서 다 실행되니까)
각 파일/디렉토리에 권한을 확실하게 주는 방법도 있구요.

그런데 dll 의 형태 때문에 단순히 lib 라고 하신 듯한데
아마도 dll은 어떤 프로세스가 미리 띄워 놓고 계속 쓸수있는 구조때문에 쓰인듯한데 이 경우는 웹서버가 미리 띄워놓는듯 합니다.
만약 그렇지않고 .exe가 된다면 매번의 request마다 프로세스 호출이 일어나니 바람직하지 않은 모델이구요.
php에서 실행파일이 아닌 lib 내부의 함수를 직접 부를 순 없습니다
리눅스에서도 마찬가지로 하려면 apache에 모듈로 들어가야 하겠네요. 그래야 fork가 일어나지 않겠죠.

php에서 실행파일이 아닌 lib 내부의 함수를 직접 부를 순 없습니다.

nunobabo의 이미지

해보니 정말 다 나오는군요...
회사 ftp 아이디, 비번, 데이터베이스 아이디 비번, 데이터베이스 구조까지 좔좔좔 나오는군요... ㅠ.ㅠ

php에서 실행파일이 아닌 lib 내부의 함수를 직접 부를 순 없다고 하셨는데.
실행파일이라 함은 뭘 말씀하시는건지,,,
실행파일로 만들면 가능한가요 ? -_-;;;

offree의 이미지

php 의 extension 을 알아보시는 것이 좋을 듯 하네요.

사용자가 바꾸어 나가자!!

= about me =
http://wiki.kldp.org/wiki.php/offree , DeVlog , google talk : offree at gmail.com

ddoman의 이미지

아마도 DB제어 부분( 접속, 쿼리 )은 com모듈로 만들어
은닉해놓고 asp에서 해당 com모듈을 통해 db에 접근하는 일반적인(??) 모델인듯 싶네요.

그 부분은 php extension을 이용해 php와 해당 모듈( 이하 db모듈 이라 명명 )을 통신하는 방법도 있고,

soap이나 xml-rpc를 이용한 통신 방법이나,
있는지 없는지는 모르겠지만 만약 php용 corba접속 모듈이 있다면 com쓰듯이 corba를 이용해 통신을 하셔도 될것 같네요.

아님 php에서 직접 socket을 이용하셔서 통신하실수도 있고, 쉘을 통해 다른 프로그램을 실행시켜 통신하실수도 있습니다.

뭐든 장단점이 있는데, 전송부분에서의 퍼포먼스에 그다지 민감하지않으면 soap을 추천드립니다.
우선 rpc라서 확장성에서도 이득이 있고,
많은 언어,플랫폼에서 지원하기때문에
나중에 php가 아닌 다른언어를 사용하려해도 같은 모듈을 쓸수 있을것이고..흐음..이래저래 장점이 많군요 :)

ssehoony의 이미지

php는 소스가 통짜로 넘겨줘야 해서 코드 은닉이 안되는게 문제라서~
zend encoder 같은게 있습니다.
zend.com 에 가면 있습니다. 그리고 이와 비슷한 무료도 있는데
격은 안나는군요. 찾아보셈~

exman의 이미지

dll+asp는
so+php 로 비유 될수 있겠군요
(lib은 linux 에서는 static library인 .a 이기 때문에 .so가 dll과 유사하다고 할수 있습니다.)

asp처럼 dll에 직접 접근 하면 좋겠지만... (python은 ctypes같은 모듈로 할수 있음..)
php는 c-extension module을 만들어 so를 사용할수 있습니다.

방법은 여러가지가 있겠습니다만. 위의 방법이 dll+asp 다운 방법이라고 할수 있겠네요.

근데 단순히 DB관련 데이타 은닉이 목적이라면....젠드인코더가 제일 쉬운 방법이겠네요...돈이 드는게 문제지만...

뭐로 쓰건간에 strace를 했을때 DB관련 비밀번호가 드러날수도 있다는 점에 주의하시고... 잘 만들어 보시기 바랍니다.

익명 사용자의 이미지

모두 감사합니다...

질문을 다시 보니 쓴 제가 봐도 정확히 뜻을 못알아보겠는데....

암튼 허접한 질문에 시간 내 주셔서 감사합니다^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.