문제

사용 mysql api PHP 로고,이로 변환하 mysqli 위해 보안이 강화됩니다.예를 구문을 보았을 사용하 printf,그리고 나는지 알고 싶은 경우 이이 필요합니다.순간에 나가 사용하는 에코,이렇게:

echo "<h1>".$row['ARTICLE_NAME']."</h1>
<div id='leftlayer' class='leftlayer'>
<p><strong>Username: </strong>".$row['USERNAME']."
<p><strong>Article Number: </strong>".$row['ARTICLE_NO']."
<p><strong>Subtitle: </strong>".$row['SUBTITLE']."
<p><strong>Auction Start: </strong>".$row['ACCESSSTARTS']." 
</div>";

이후 가진 mysqli 해야 합니다 bind 변수의 결과는 내가 이렇게:

$getRecords->bind_result($ARTICLE_NO, $ARTICLE_NAME, $SUBTITLE$, $CURRENT_BID, $START_PRICE, $BID_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS, $ACCESSORIGIN_END, $USERNAME, $BEST_BIDDER_ID, $FINISHED$, $WATCH$$, $BUYITNOW_PRICE, $PIC_URL, $PRIVATE_AUCTION, $AUCTION_TYPE, $ACCESSINSERT_DATE, $ACCESSUPDATE_DATE, $CAT_DESC$, $CAT_PATH, $ARTICLE_DESC, $COUNTRYCODE, $LOCATION$, $CONDITIONS, $REVISED$, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO, $FEE_INSERTION, $FEE_FINAL$, $FEE_LISTING, $PIC_XXL$, $PIC_DIASHOW, $PIC_COUNT, $ITEM_SITE_ID); 

고 싶은 알 수 있다면 나는 단순히 바 참조하$행 바인딩된 변수,예를 들어:

  <p><strong>Username: </strong>".$USERNAME."

가 있는 보안 문제는 이 방법으로,또는 괜찮

도움이 되었습니까?

해결책

나는 확실하지 않다는 바인딩은 응용 프로그램이 더 안전하면 당신이 얻고 있는 데이터의 데이터베이스,그러나 도움이 될 것입니다면 당신은 쓰기로 DB 으로 당신은 위험이 없 SQL injection.

어떤 방법을 읽는 데이터베이스로부터,당신은 여전히 탈출해야 사용하여 출력 htmlspecialchars() 하지 않은 경우 전적으로 특정하는 데이터가 완전히 깨끗합니다.이밖에 문을 처리하지 않습니다 이것으로 당신은 제안에 귀하의 의견 Ionut-당신은 탈출하는 방법으로 데이터를 적용할 수 있는 곳은 출력니다.PHP/MySQL 알지 못한지 여부를 인쇄할 HTML 문서로/shell command/json/등이 있습니다.이 없는 마법 탈출 방법을 만드는 모든 데이터 안전한 모든 출력 매체입니다.

다른 팁

MySQLI는 매개 변수를 바인딩 할 수 있기 때문에 MySQLI가 MySQL 패키지보다 베팅된다는 데 동의합니다. 즉, MySQLI와 함께 적어도 두 가지 심각한 문제를 발견했습니다.

  • 버그 46808 다른 방식으로보고 된 심각한 문제입니다. 최소 3 년 아직 아직 고정되지 않았습니다. LongText 열을 사용하려면 문제가있을 수 있습니다. 그리고
  • 때때로 나는 단지 mysqli가 실패하는 이상한 버그를 얻습니다 ( "Canary Form"또는 SomeSuch의 오류에 대한 의미없는 메시지). 이 시점에서 (1)과 결합) 방금 MySQLI를 포기해야했습니다.

PDO는 아마도 더 나은 선택 일 것입니다. 나? 방금 MySQL로 돌아갔습니다. 끈을 탈출하는 등에주의를 기울이는 한 단순성에 대해 논쟁하기가 어렵습니다.

XML/HTML 페이지를 제공 할 때 출력을 피해야합니다. 그 사용을 위해 htmlspecialchars 또는 htmlentities. 어쨌든, 데이터 소스와 해당 데이터를 가져 오는 데 사용 된 API에 관계없이 출력을 피해야합니다.

특정 PHP 버전에 대해 일부 버퍼 오버 플로우 취약성이보고되었다는 것을 알고 있습니다. 그래도 어떤 버전이 있는지 모르겠습니다. 따라서이를 기준으로 입력이 제대로 필터링되지 않았다고 가정하면 printf 사용하는 것보다 안전하지 않을 수 있습니다 에코. 그래도 맥락에 크게 의존합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top