2011-08-07 4 views
1

postgresql을 기본 데이터베이스로 사용하는 프로젝트에 Rails를 사용하고 있습니다. 몇 가지 수정이 필요한 검색 양식이 있습니다. 특히, '테이블 놓을 사람'과 같은 어떤 사람이 입력하면 손에 재앙이 발생하지 않도록해야합니다. 어쨌든 나는 하나의 테이블에만 dearch을 제한 할 수 있으며 "drop table allusers"와 같은 것을 검색하는 것은 테이블을 떨어 뜨리지 않고 결과를 반환하는 것을 보장합니까?SQL 문과 같이 포스트그레스에서 문자열을 이스케이프 처리하는 방법은 무엇입니까?

+0

http://sequel.rubyforge.org/rdoc/files/doc/prepared_statements_rdoc.html –

답변

3

ActiveRecord를 사용하여 모든 쿼리를 수행하고 전달할 매개 변수가있는 경우 자리 표시 자 (?)를 사용할 경우 걱정할 사항이 없습니다. 데이터가 이스케이프되고 사용자 입력이 쿼리의 특성을 변경할 수 없습니다.

http://guides.rubyonrails.org/security.html#sql-injection

0

가장 간단한 방법은 아마 당신이 당신의 데이터베이스 역할이 올바르게 설정되어있어 있는지 확인하는 것입니다. 쿼리가 실행되는 역할은 원하는 작업 만 수행 할 수 있어야합니다. 웹 애플리케이션이 데이터베이스에 연결하여 allusers 테이블에 대해 SELECT 문을 발행 할 수있는 역할 만 원한다고 들린다. 이 경우 롤을 작성한 후 allusers 테이블에 대한 SELECT 특권을 부여하십시오.

database rolesgranting access privileges에 대한 자세한 내용은 PostgreSQL 설명서를 참조하십시오.

관련 문제