쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

30년간 직장 생활을 하고 정년 퇴직을 하였습니다.퇴직 후 재능넷 수행 내용은 쇼핑몰/학원/판매점 등 관리 프로그램 및 데이터 ...

안녕하세요!!!고객님이 상상하시는 작업물 그 이상을 작업해 드리려 노력합니다.저는 작업물을 완성하여 고객님에게 보내드리는 것으로 거래 완료...

AS규정기본적으로 A/S 는 평생 가능합니다. *. 구매자의 요청으로 수정 및 보완이 필요한 경우 일정 금액의 수고비를 상호 협의하에 요청 할수 있...

웹 보안 강화: XSS, CSRF 방어와 암호화 기법 구현

2024-09-29 10:00:28

재능넷
조회수 791 댓글수 0

웹 보안 강화: XSS, CSRF 방어와 암호화 기법 구현 🛡️🔒

 

 

안녕하세요, 여러분! 오늘은 웹 개발자들에게 매우 중요한 주제인 "웹 보안 강화"에 대해 자세히 알아보겠습니다. 특히 XSS(크로스 사이트 스크립팅), CSRF(크로스 사이트 요청 위조) 방어 기법과 암호화 구현에 대해 심층적으로 다룰 예정입니다. 🕵️‍♂️💻

웹 보안은 현대 인터넷 환경에서 절대 간과할 수 없는 중요한 요소입니다. 우리가 만드는 웹 애플리케이션이 안전하지 않다면, 사용자의 개인정보가 유출되거나 시스템이 해킹당할 수 있습니다. 이는 단순히 기술적인 문제를 넘어 법적, 윤리적 문제로 이어질 수 있죠.

재능넷과 같은 재능공유 플랫폼에서도 웹 보안은 매우 중요합니다. 사용자들의 개인정보와 거래 내역을 안전하게 보호해야 하기 때문이죠. 그래서 오늘 우리가 배울 내용은 실제 서비스 운영에 있어 매우 중요한 지식이 될 것입니다.

자, 그럼 본격적으로 웹 보안의 세계로 들어가볼까요? 🚀

1. XSS(크로스 사이트 스크립팅) 공격과 방어 🛡️

XSS, 즉 크로스 사이트 스크립팅은 웹 애플리케이션의 취약점을 이용해 사용자의 브라우저에 악성 스크립트를 주입하는 공격 기법입니다. 이 공격은 사용자의 세션을 탈취하거나, 웹사이트를 변조하거나, 악성 코드를 유포하는 등 다양한 피해를 일으킬 수 있습니다.

1.1 XSS 공격의 종류

XSS 공격은 크게 세 가지 유형으로 나눌 수 있습니다:

  • 저장형 XSS (Stored XSS): 악성 스크립트가 서버에 저장되어 다른 사용자가 해당 페이지를 방문할 때 실행됩니다.
  • 반사형 XSS (Reflected XSS): URL 파라미터 등을 통해 전달된 악성 스크립트가 서버의 응답에 그대로 포함되어 실행됩니다.
  • DOM 기반 XSS (DOM-based XSS): 클라이언트 측 스크립트가 DOM을 조작할 때 발생하는 취약점을 이용합니다.

1.2 XSS 공격 예시

간단한 XSS 공격 예시를 살펴보겠습니다:

<script>
    alert("XSS 공격이 성공했습니다!");
</script>

이 스크립트가 웹 페이지에 삽입되면, 해당 페이지를 방문한 모든 사용자의 브라우저에서 경고창이 뜨게 됩니다. 물론 실제 공격은 이보다 훨씬 교묘하고 위험할 수 있습니다.

1.3 XSS 방어 기법

XSS 공격을 방어하기 위해서는 다음과 같은 기법들을 사용할 수 있습니다:

  1. 입력값 검증 및 필터링: 사용자로부터 받은 모든 입력값을 서버 측에서 철저히 검증하고 필터링합니다.
  2. 출력 이스케이핑: 동적으로 생성되는 HTML, JavaScript, CSS, URL 등에 대해 적절한 이스케이핑을 적용합니다.
  3. 콘텐츠 보안 정책(CSP) 사용: 허용된 소스의 스크립트만 실행되도록 제한합니다.
  4. HttpOnly 쿠키 사용: 중요한 쿠키에 HttpOnly 플래그를 설정하여 JavaScript를 통한 접근을 차단합니다.
  5. 안전한 JavaScript API 사용: innerHTML 대신 textContent를 사용하는 등 안전한 API를 선택합니다.

1.4 XSS 방어 코드 예시

다음은 Node.js의 Express 프레임워크에서 XSS 공격을 방어하는 간단한 미들웨어 예시입니다:

const express = require('express');
const xss = require('xss');

const app = express();

app.use((req, res, next) => {
    // 요청 바디의 모든 필드에 대해 XSS 필터링 적용
    for (let key in req.body) {
        if (typeof req.body[key] === 'string') {
            req.body[key] = xss(req.body[key]);
        }
    }
    next();
});

app.post('/submit', (req, res) => {
    // 이제 req.body의 모든 문자열 필드는 XSS 공격으로부터 안전합니다.
    console.log(req.body);
    res.send('데이터가 안전하게 처리되었습니다.');
});

app.listen(3000, () => console.log('서버가 3000번 포트에서 실행 중입니다.'));

이 코드는 요청 바디의 모든 문자열 필드에 대해 XSS 필터링을 적용합니다. 하지만 이것만으로는 완벽한 방어가 되지 않으므로, 다른 보안 기법들과 함께 사용해야 합니다.

1.5 XSS 취약점 테스트

XSS 취약점을 테스트하기 위해 다음과 같은 방법을 사용할 수 있습니다:

  1. 수동 테스트: 다양한 입력 필드에 의심스러운 스크립트를 직접 입력해봅니다.
  2. 자동화 도구 사용: OWASP ZAP, Burp Suite 등의 보안 테스팅 도구를 활용합니다.
  3. 퍼징(Fuzzing): 다양한 입력값을 자동으로 생성하여 테스트합니다.
  4. 코드 리뷰: 소스 코드를 직접 검토하여 잠재적인 취약점을 찾아냅니다.

XSS 공격은 매우 흔하면서도 위험한 공격 기법입니다. 개발자들은 항상 이에 대한 경각심을 가지고 코딩해야 합니다. 재능넷과 같은 플랫폼에서도 사용자가 입력한 내용(예: 프로필 설명, 메시지 등)이 다른 사용자에게 표시될 때 XSS 공격의 위험이 있으므로 특별히 주의해야 합니다.

2. CSRF(크로스 사이트 요청 위조) 공격과 방어 🛡️

CSRF(Cross-Site Request Forgery)는 공격자가 인증된 사용자의 권한을 도용하여 원하지 않는 작업을 수행하도록 만드는 공격 기법입니다. 이 공격은 사용자가 로그인한 상태에서 악의적인 웹사이트를 방문할 때 발생할 수 있습니다.

2.1 CSRF 공격의 원리

CSRF 공격의 기본 원리는 다음과 같습니다:

  1. 사용자가 신뢰할 수 있는 사이트 A에 로그인합니다.
  2. 사이트 A는 사용자의 브라우저에 인증 쿠키를 저장합니다.
  3. 사용자가 악의적인 사이트 B를 방문합니다.
  4. 사이트 B는 사용자 모르게 사이트 A로 요청을 보냅니다.
  5. 이 요청에는 사용자의 인증 쿠키가 자동으로 포함됩니다.
  6. 사이트 A는 이 요청을 정상적인 사용자의 요청으로 인식하고 처리합니다.

2.2 CSRF 공격 예시

다음은 간단한 CSRF 공격 예시입니다:

<!-- 악의적인 웹사이트의 HTML -->
<img src="https://bank.example.com/transfer?amount=1000000&to=attacker" style="display:none" alt="Hidden"/>

<!-- 또는 JavaScript를 이용한 방법 -->
<script>
    fetch('https://bank.example.com/transfer', {
        method: 'POST',
        body: JSON.stringify({ amount: 1000000, to: 'attacker' }),
        credentials: 'include'  // 쿠키를 포함시킵니다.
    });
</script>

이 코드가 포함된 페이지를 방문하면, 사용자 모르게 은행 사이트로 송금 요청이 전송됩니다.

2.3 CSRF 방어 기법

CSRF 공격을 방어하기 위해 다음과 같은 기법들을 사용할 수 있습니다:

  1. CSRF 토큰 사용: 각 요청마다 unique한 토큰을 생성하여 검증합니다.
  2. SameSite 쿠키 속성 사용: 쿠키가 같은 사이트 내에서만 전송되도록 제한합니다.
  3. Referer 검증: 요청의 출처(Referer 헤더)를 확인합니다.
  4. Custom Request Headers: AJAX 요청에 custom 헤더를 추가하여 검증합니다.
  5. Double Submit Cookie: 쿠키와 요청 파라미터에 같은 랜덤 값을 포함시켜 검증합니다.

2.4 CSRF 방어 코드 예시

다음은 Express.js에서 CSRF 토큰을 이용한 방어 예시입니다:

const express = require('express');
const csrf = require('csurf');
const cookieParser = require('cookie-parser');

const app = express();

app.use(cookieParser());
app.use(csrf({ cookie: true }));

app.get('/form', (req, res) => {
    // CSRF 토큰을 포함한 폼 렌더링
    res.send(`
        <form action="/submit" method="post">
            <input type="hidden" name="_csrf" value="${req.csrfToken()}">
            <input type="text" name="username">
            <button type="submit">Submit</button>
        </form>
    `);
});

app.post('/submit', (req, res) => {
    res.send('폼이 안전하게 제출되었습니다.');
});

app.use((err, req, res, next) => {
    if (err.code !== 'EBADCSRFTOKEN') return next(err);
    res.status(403).send('CSRF 토큰이 유효하지 않습니다.');
});

app.listen(3000, () => console.log('서버가 3000번 포트에서 실행 중입니다.'));

이 코드는 각 폼 요청마다 unique한 CSRF 토큰을 생성하고, 제출된 폼의 토큰을 검증합니다.

2.5 CSRF 취약점 테스트

CSRF 취약점을 테스트하기 위해 다음과 같은 방법을 사용할 수 있습니다:

  1. 수동 테스트: 다른 도메인에서 중요한 작업을 수행하는 요청을 보내봅니다.
  2. 자동화 도구 사용: OWASP ZAP, Burp Suite 등의 도구를 활용합니다.
  3. 브라우저 개발자 도구 활용: 네트워크 탭을 통해 요청과 응답을 분석합니다.
  4. 프록시 서버 사용: 중간에서 요청을 가로채고 수정하여 테스트합니다.

CSRF 공격은 사용자가 인지하지 못하는 사이에 발생할 수 있어 매우 위험합니다. 재능넷과 같은 플랫폼에서는 특히 결제나 개인정보 변경과 같은 중요한 작업에 대해 CSRF 방어를 철저히 해야 합니다.

3. 암호화 기법 구현 🔐

웹 애플리케이션에서 암호화는 매우 중요한 보안 요소입니다. 사용자의 비밀번호, 개인정보, 중요한 데이터 등을 안전하게 보호하기 위해 다양한 암호화 기법을 사용해야 합니다.

3.1 암호화의 기본 개념

암호화는 크게 두 가지로 나눌 수 있습니다:

  • 대칭키 암호화: 암호화와 복호화에 같은 키를 사용합니다. 속도가 빠르지만 키 관리가 어렵습니다.
  • 비대칭키 암호화: 공개키와 개인키를 사용합니다. 키 관리가 용이하지만 속도가 느립니다.

또한, 암호화 방식은 다음과 같이 구분할 수 있습니다:

  • 단방향 암호화(해시): 복호화가 불가능한 방식으로, 주로 비밀번호 저장에 사용됩니다.
  • 양방향 암호화: 암호화된 데이터를 다시 원래 형태로 복호화할 수 있는 방식입니다.

3.2 비밀번호 암호화

비밀번호는 절대로 평문으로 저장해서는 안 됩니다. 반드시 안전한 해시 함수를 사용하여 암호화해야 합니다.

다음은 Node.js에서 bcrypt를 사용한 비밀번호 암호화 예시입니다:

const bcrypt = require('bcrypt');

async function hashPassword(password) {
    const saltRounds = 10;
    const hashedPassword = await bcrypt.hash(password, saltRounds);
    return hashedPassword;
}

async function verifyPassword(password, hashedPassword) {
    const isMatch = await bcrypt.compare(password, hashedPassword);
    return isMatch;
}

// 사용 예시
async function main() {
    const password = 'mySecurePassword123';
    const hashedPassword = await hashPassword(password);
    console.log('Hashed password:', hashedPassword);

    const isMatch = await verifyPassword(password, hashedPassword);
    console.log('Password match:', isMatch);
}

main();

이 코드는 bcrypt를 사용하여 비밀번호를 안전하게 해시화하고, 나중에 사용자가 입력한 비밀번호와 저장된 해시를 비교할 수 있습니다.

3.3 데이터 암호화

중요한 데이터를 암호화할 때는 주로 대칭키 암호화 알고리즘을 사용합니다. 다음은 Node.js에서 AES 알고리즘을 사용한 데이터 암호화 예시입니다:

const crypto = require('crypto');

const algorithm = 'aes-256-cbc';
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);

function encrypt(text) {
    let cipher = crypto.createCipheriv(algorithm, Buffer.from(key), iv);
    let encrypted = cipher.update(text);
    encrypted = Buffer.concat([encrypted, cipher.final()]);
    return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') };
}

function decrypt(text) {
    let iv = Buffer.from(text.iv, 'hex');
    let encryptedText = Buffer.from(text.encryptedData, 'hex');
    let decipher = crypto.createDecipheriv(algorithm, Buffer.from(key), iv);
    let decrypted = decipher.update(encryptedText);
    decrypted = Buffer.concat([decrypted, decipher.final()]);
    return decrypted.toString();
}

// 사용 예시
var hw = encrypt("Hello World!")
console.log(hw)
console.log(decrypt(hw))

이 코드는 AES-256-CBC 알고리즘을 사용하여 데이터를 암호화하고 복호화합니다. 실제 사용 시에는 키와 IV를 안전하게 관리해야 합니다.

3.4 HTTPS 구현

HTTPS는 웹 통신을 암호화하는 프로토콜입니다. Node.js에서 HTTPS 서버를 구현하는 방법은 다음과 같습니다:

const https = require('https');
const fs = require('fs');

const options = {
    key: fs.readFileSync('path/to/private.key'),
    cert: fs.readFileSync('path/to/certificate.crt')
};

https.createServer(options, (req, res) => {
    res.writeHead(200);
    res.end('Hello World!');
}).listen(8000);

이 코드는 SSL/TLS 인증서를 사용하여 HTTPS 서버를 생성합니다. 실제 운영 환경에서는 신뢰할 수 있는 인증 기관(CA)에서 발급받은 인증서를 사용해야 합니다.

3.5 안전한 키 관리

암호화 키의 안전한 관리는 매우 중요합니다. 다음은 키 관리를 위한 몇 가지 best practices입니다:

  • 키를 소스 코드에 직접 포함시키지 않습니다.
  • 환경 변수나 별도의 설정 파일을 사용하여 키를 관리합니다.
  • 키 순환(rotation)을 정기적으로 수행합니다.
  • 필요한 경우 키 관리 시스템(KMS)을 사용합니다.

암호화는 웹 보안의 핵심 요소입니다. 재능넷과 같은 플랫폼에서는 사용자의 개인정보, 결제 정보 등 민감한 데이터를 다루기 때문에 강력한 암호화 기법을 적용해야 합니다. 또한, HTTPS를 통해 모든 통신을 암호화하는 것도 필수적입니다.

4. 추가적인 웹 보안 강화 방법 🛠️

XSS, CSRF 방어와 암호화 외에도 웹 애플리케이션의 보안을 강화하기 위한 다양한 방법들이 있습니다. 이러한 방법들을 종합적으로 적용하면 더욱 안전한 웹 서비스를 구축할 수 있습니다.

4.1 입력 유효성 검사

모든 사용자 입력은 잠재적인 위험을 내포하고 있습니다. 따라서 서버 측에서 철저한 입력 유효성 검사를 수행해야 합니다.

const validator = require('validator');

app.post('/register', (req, res) => {
    const { email, password } = req.body;

    if (!validator.isEmail(email)) {
        return res.status(400).send('유효하지 않은 이메일 주소입니다.');
    }

    if (!validator.isLength(password, { min: 8 })) {
        return res.status(400).send('비밀번호는 최소 8자 이상이어야 합니다.');
    }

    // 유효성 검사를 통과한 경우, 회원가입 로직 수행
    // ...
});

이 코드는 validator 라이브러리를 사용하여 이메일과 비밀번호의 유효성을 검사합니다.

4.2 Rate Limiting

Rate Limiting은 특정 IP나 사용자로부터의 요청 횟수를 제한하여 DoS 공격이나 무차별 대입 공격을 방지합니다.

const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15분
    max: 100 // IP당 100회
});

app.use(limiter);

이 코드는 express-rate-limit 미들웨어를 사용하여 15분 동안 IP당 100회의 요청만을 허용합니다.

4.3 보안 헤더 설정

적절한 HTTP 보안 헤더를 설정하면 다양한 웹 보안 위협을 줄일 수 있습니다.

const helmet = require('helmet');

app.use(helmet());

helmet 미들웨어는 다양한 HTTP 헤더를 자동으로 설정하여 웹 애플리케이션의 보안을 강화합니다.

4.4 안전한 세션 관리

세션을 안전하게 관리하는 것은 사용자 인증의 핵심입니다.

const session = require('express-session');

app.use(session({
    secret: 'your-secret-key',
    res  ave: true,
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true, httpOnly: true, sameSite: 'strict' }
}));

이 코드는 express-session을 사용하여 안전한 세션 설정을 구현합니다. secure 옵션은 HTTPS 연결에서만 쿠키를 전송하도록 하고, httpOnly는 JavaScript를 통한 쿠키 접근을 방지하며, sameSite는 CSRF 공격을 방어합니다.

4.5 데이터베이스 보안

데이터베이스 보안은 웹 애플리케이션의 중요한 부분입니다. SQL 인젝션 공격을 방지하기 위해 준비된 구문(Prepared Statements)을 사용해야 합니다.

const mysql = require('mysql2');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'user',
    password: 'password',
    database: 'mydb'
});

app.get('/user/:id', (req, res) => {
    const query = 'SELECT * FROM users WHERE id = ?';
    connection.execute(query, [req.params.id], (error, results) => {
        if (error) throw error;
        res.json(results);
    });
});

이 코드는 mysql2 라이브러리를 사용하여 준비된 구문으로 SQL 쿼리를 실행합니다. 이렇게 하면 SQL 인젝션 공격을 효과적으로 방지할 수 있습니다.

4.6 에러 처리

적절한 에러 처리는 보안뿐만 아니라 사용자 경험 측면에서도 중요합니다. 운영 환경에서는 상세한 에러 메시지를 클라이언트에게 노출시키지 않아야 합니다.

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});

// 404 처리
app.use((req, res, next) => {
    res.status(404).send("Sorry, can't find that!");
});

이 코드는 Express.js에서 전역 에러 핸들러와 404 핸들러를 구현하는 방법을 보여줍니다.

4.7 정기적인 보안 감사 및 업데이트

웹 애플리케이션의 보안은 지속적인 관리가 필요합니다. 다음과 같은 방법으로 보안을 유지할 수 있습니다:

  • 정기적인 보안 취약점 스캔 실시
  • 사용 중인 라이브러리와 프레임워크의 최신 버전 유지
  • 보안 패치 즉시 적용
  • 정기적인 코드 리뷰 실시
  • 보안 전문가의 주기적인 감사

웹 보안은 끊임없이 진화하는 분야입니다. 새로운 취약점과 공격 기법이 계속해서 발견되고 있기 때문에, 개발자들은 항상 최신 보안 동향을 파악하고 대응 방법을 학습해야 합니다.

재능넷과 같은 플랫폼에서는 이러한 종합적인 보안 방법들을 적용하여 사용자들의 개인정보와 거래 내역을 안전하게 보호해야 합니다. 특히 결제 시스템이나 개인 메시지 기능과 같은 민감한 부분에서는 더욱 철저한 보안 조치가 필요합니다.

결론 🏁

웹 보안은 현대 웹 개발에서 가장 중요한 요소 중 하나입니다. XSS, CSRF, 취약한 암호화 등의 보안 위협은 사용자의 개인정보를 위험에 빠뜨리고 서비스의 신뢰도를 떨어뜨릴 수 있습니다.

이 글에서 우리는 다음과 같은 주요 웹 보안 기술들을 살펴보았습니다:

  1. XSS(크로스 사이트 스크립팅) 방어
  2. CSRF(크로스 사이트 요청 위조) 방어
  3. 안전한 암호화 기법 구현
  4. 입력 유효성 검사
  5. Rate Limiting
  6. 보안 헤더 설정
  7. 안전한 세션 관리
  8. 데이터베이스 보안
  9. 적절한 에러 처리

이러한 보안 기술들을 적절히 구현하고 지속적으로 관리하면, 훨씬 더 안전한 웹 애플리케이션을 만들 수 있습니다.

재능넷과 같은 플랫폼에서는 이러한 보안 기술들이 특히 중요합니다. 사용자들의 개인정보, 결제 정보, 거래 내역 등 민감한 데이터를 다루기 때문에, 최고 수준의 보안 조치가 필요합니다. 또한, 플랫폼의 신뢰성과 직결되는 문제이기 때문에 보안에 대한 투자는 선택이 아닌 필수입니다.

마지막으로, 웹 보안은 한 번 구현하고 끝나는 것이 아니라 지속적인 관리와 업데이트가 필요한 과정임을 명심해야 합니다. 새로운 보안 위협이 계속해서 등장하고 있기 때문에, 개발자들은 항상 최신 보안 동향을 파악하고 대응 방법을 학습해야 합니다.

안전한 웹 애플리케이션 개발은 사용자의 신뢰를 얻고 비즈니스의 성공을 이끄는 핵심 요소입니다. 이 글에서 다룬 보안 기술들을 적용하여 더욱 안전하고 신뢰할 수 있는 웹 서비스를 만들어 나가시기 바랍니다.

관련 키워드

  • XSS
  • CSRF
  • 암호화
  • 웹 보안
  • 입력 검증
  • Rate Limiting
  • 보안 헤더
  • 세션 관리
  • 데이터베이스 보안
  • 에러 처리

지적 재산권 보호

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

저렴하고 빠르고 추후 유지 관리 비용 등을 고려 하여 최대한 부담없는 프로그램을 만들어 드리겠습니다.프로그램 제작에 관련된 어떤한 문의도 받...

C언어, JAVA, C++, C# 응용프로그램 개발해드립니다.간단한 프로그램부터 복잡한 응용프로그래밍 까지 가능합니다. [일정]- 요구사항 간단히 ...

​주문전 쪽지로 업무협의 부탁드려요!!​응용 S/W 프로그램개발 15년차 입니다.​​GIS(지리정보시스템), 영상처리, 2D/3D그래픽, 데이터베...

#### 결재 먼저 하지 마시고 쪽지 먼저 주세요. ######## 결재 먼저 하지 마시고 쪽지 먼저 주세요. ####안녕하세요. C/C++/MFC/C#/Python 프...

📚 생성된 총 지식 10,356 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창