안녕하세요, 사용자가 코드 (PHP, 자바, 자바 스크립트 C++ 등)의 일부를 제출할 수 있도록 할 계획입니다.php에서 대체 할 코드를 사용자가 제출할 수있게 하시겠습니까?
누구나 내 사이트의 안전을 위해 최선의 방법을 제안 할 수 있습니까? :))
나는 PHP에서 한 번 이스케이프 할 태그/문자/문자열이 코드 문자열을 제출했음을 의미합니까?
안녕하세요, 사용자가 코드 (PHP, 자바, 자바 스크립트 C++ 등)의 일부를 제출할 수 있도록 할 계획입니다.php에서 대체 할 코드를 사용자가 제출할 수있게 하시겠습니까?
누구나 내 사이트의 안전을 위해 최선의 방법을 제안 할 수 있습니까? :))
나는 PHP에서 한 번 이스케이프 할 태그/문자/문자열이 코드 문자열을 제출했음을 의미합니까?
검색어에 자리 표시자를 사용하면 입력을 이스케이프 처리 할 필요가 없습니다. 자리 표시 자, 바인딩 및 준비된 문이 가장 선호되는 방법입니다.
핸들을 다시 사용하고 입력을 변경하면 쿼리가 1 회 이상 빠르면 빠릅니다.
더 안전합니다. 문자열은 쿼리로 해석되지 않습니다. 당신이 저장하는 것은 당신이 얻는 것입니다.
내가 여기에 관련 예제를 제공하기 위해 대상 SQL에 대해 좀 더 알고해야하지만 것 몇 가지 링크입니다 :
PDO 스타일 바인딩 : http://docs.php.net/pdo.prepared-statements
MySqli 스타일 바인딩 : http://docs.php.net/manual/en/mysqli-stmt.bind-param.php
언제 다시 읽으십시오.
htmlspecialchars($string, ENT_QUOTES);
ENT_QUOTES 옵션을 사용하면 단일 및 이중 otes가 이스케이프됩니다.
코드를 화면에 표시하려는 경우 데이터베이스에 저장하기 전에 이스케이프하거나 바꾸지 않아도됩니다 (저장하려는 경우). 물론 이것은 mysql_real_escape_string()
과 같은 데이터베이스 삽입 (예 : RDBMS의 동등한 위생 처리 루틴)을 피하는 데는 적용되지 않습니다. 그 단계는 여전히 절대적으로 필요합니다.
당신은 eval()
또는 시스템 호출을 통해 제출 된 코드를 평가하지 마십시오 : 코드를 표시 할 때
, 그냥 있는지 확인합니다.
브라우저에 코드를 다시 표시하려면 htmlspecialchars()
으로 이스케이프 처리하십시오. 이스케이프 처리하지 않고 표시하거나 크로스 사이트 스크립팅 취약점을 소개합니다.
자동으로 실행하지 않으려는 경우 (보통의 mysql 위생 조치 제외) 어떤 것도 이스케이프 처리 할 필요가 없습니다.
저는 전문가가 아닙니다 (어제에 대해서만 들었습니다), 적어도 HTML에서는 htmlentities (this)를 사용해 볼 수 있습니다. htmlentities를 사용하여 무언가가 변환되면 일반 텍스트가됩니다. 따라서 브라우저에서 열면 태그 나 모든 것을 볼 수 있습니다 (예 : <a href="blah blah">
). 로그에 쓰거나 다른 것으로 열면 엽니 다. 텍스트 기반 편집기에서 html 엔티티를 나타내는 기호 및 shnaz가 표시됩니다.
변환해야 할 경우 html_entity_decode 함수를 사용할 수는 있지만 추측을 베팅하고 변환 할 필요가 없다고 가정합니다.
다른 언어의 경우 무엇을해야하는지 잘 모릅니다.
해당 코드로 무엇을 하시겠습니까? 너 그걸 갈거야? – kapa
전시 ... 미안 : P – sbaaaang