2011-07-28 3 views
0

간단한 보안 질문이 있는데 그 대답은 찾을 수 없습니다.앵커 내부에서 데이터베이스 열 이름을 직접 사용하십시오.

기본적으로 특정 열 뒤에 테이블을 주문하고 싶습니다. 이 방법은 두 개의 추가 세그먼트가있는 앵커를 사용하는 것입니다. 지금은 세그먼트 중 하나에서 실제 열 이름을 사용하고 있습니다. 원하는 열은 여기에서 생각하기 시작했습니다.

이 방법으로 처리 할 수 ​​있습니까? 글쎄 내게는 내 테이블 중 하나에서 내 컬럼 이름 중 일부에 사람들이 액세스 할 수있게함으로써 엄청난 보안 위험이있는 것처럼 보입니다. 그러나 다른 한편으로 나는 물론 모든 것을 벗어나서 아무 것도 할 수있는 어떠한 접근도하지 않을 것입니다. 불행히도 나는 전능하지 않아 뭔가 잘못했을 수도 있고 보안상의 위험으로 돌아갈 수도 있습니다.)

그래서 어떻게해야합니까? 나중에 열 이름으로 다시 변환하는 숫자와 같은 다른 종류의 이름을 사용해야합니까? 아니면 내 길은 어때?

오, 나는 codeigniter와 PHP에서 일하고있어!

+2

저는 보안 전문가가 아니지만이 [xkcd strip] (http://xkcd.com/327/) 이후에는 알고 있어야합니다. 희망, 당신은 이런 일을하지 않습니다,'update bobby_table set $ COLUMN_NAME = null' - UI의'email_id' 주입이 당신의 데이터를 날려 버릴 수있는 곳 – Nishant

+0

글쎄 이것은 실제로 데이터를 위생 처리하는 문제는 아닙니다. 내 열 이름을 처리하는 방법. 하지만 어쨌든 감사합니다! – Vejto

답변

0

보안상의 보장은 없습니다.

많은 웹 사이트는 데이터베이스 테이블과 열을 알고있는 오픈 소스 PHP 응용 프로그램을 사용합니다. 그리고 나는 이것이 웹 사이트 공격에 매우 유용하다는 것을 기억하지 못합니다. SQL 삽입 문제가있는 경우 사용자가 테이블 구조를 알고 있다는 사실을 염려해서는 안됩니다. SQL 주입 지점을 제거하는 것이 좋습니다.

+0

아,이게 내가 찾고 있던 대답 이었어. 고마워! – Vejto

1

당신은 그것을 위해 화이트리스트를 사용할 수 있습니다

$mapping = array('col_a' => 'firstname', 'col_b' => 'lastname'); 

또한 정확히 같은 이름, 예를 사용할 수 있습니다 : 데이터베이스-열 이름에 ANCOR-열 이름을 매핑 PHP에서 해시를 만들기 'firstname'은 'firstname'에 매핑됩니다. 그런 다음 ancor-column-name을 사용하여 매핑 해시에서 database-column-name을 가져옵니다. ancor-column-name에 대한 항목이 없으면 오류를 리턴하십시오. 그러면 사용자 입력이 확인됩니다.

+0

문제에 대한 좋은 해결책이지만 데이터베이스에 어떤 이름을 사용했는지에 대한 정보를 사용자에게 제공하는 것이 더 좋은 답변을 찾고있었습니다. 어쨌든, 고마워! 나는 이것을 사용할 것이다! – Vejto

관련 문제