03-21-2013, 10:11 PM
folaani نوشته: خب حالا دیگه زیاد از خودم تعریف نکنم.
بهرحال کار سختی بود و حتی اینم نمیتونم بگم آخر کامل و بی نقصه؛ باگ هم که ممکنه بهرحال هر برنامه ای داشته باشه. خطای انسانی رو همه و در هر برنامه ای هرچقدر هم که دقت بکنن میشه پیدا کرد.
من یک نگاه سرسری برای باگها انداختم, تا اینجا به نگر فرزام[sup][aname="rpa5e62f21127424ffe8e3a9aa248c76d8c"][[/aname][anchor="pa5e62f21127424ffe8e3a9aa248c76d8c"]1][/anchor][/sup] میاید (تنها یک گیر کوچک اینجا شاید داشته باشی):
کد پیاچپی:
function quote_smart($value, $identifier=false)
{
if(!is_numeric($value)) {
//if(get_magic_quotes_gpc()) $value = stripslashes($value);
if(!$identifier) return "'" .mysql_real_escape_string($value) . "'";
else if(strpos($value, '`')===false) return '`' .$value . '`';
else {
$this->error("Value contains invalid character (backtick - '`') for identifiers");
return false;
}
}
اینجا با اینکه بسیار خوب کارو انجام دادی و query پایانی هم quote میشود, همچنان ولی جا برای injection هست, اگر که mysql روی سرور یکی از encodingهایِ زیر را ببیوسد[sup][aname="rpa98985c732aab42b0aa6865b294eadb76"][[/aname][anchor="pa98985c732aab42b0aa6865b294eadb76"]2][/anchor][/sup]: GBK or BIG-5
php - SQL injection that gets around mysql_real_escape_string() - Stack Overflow
در این ریخت ما هنوز میتوانیم یک ' در query رد کنیم و login را بپیچانیم (:
رویهمرفته کد براستی پیشهای نوشته شده و نکتههایِ امنیتی کمابیش همگی به کار رفتهاند, از globals گرفته تا access و .., همانجور هم که گفتی بیشمار
ساماندهی (configs) آنجاست و به درد یک پروژهیِ بزرگ میخورد.
با همهیِ اینها من فرزامگرایی[sup][aname="rpa7cd75407684d4e59a36ecb432a42072f"][[/aname][anchor="pa7cd75407684d4e59a36ecb432a42072f"]3][/anchor][/sup] بیش از اندازهای در کدت میبینم که به نگرم برای همان خودنمایی بوده باشد ((:
نکتهیِ crypt_random ٸه دستکاری شده چیه؟ درگاشت[sup][aname="rpafdaf238307cb4654840f51c7777d74fa"][[/aname][anchor="pafdaf238307cb4654840f51c7777d74fa"]4][/anchor][/sup] را از کجا گرفتهای؟
چیزیکه من یافتم:
کد پیاچپی:
@$request_entropy=sha1(microtime().$pepper.$_SERVER['REMOTE_ADDR'].$_SERVER['REMOTE_PORT'].$_SERVER['HTTP_USER_AGENT'].serialize($_POST).serialize($_GET).serialize($_COOKIE));
اگر تنها این باشد میشود گفت خوبه, ولی همچنان درگاشت نابِ ناب نیست و هنوز اسپاش[sup][aname="rpa0e0633ee819f4dcbbc877db88c1a7af9"][[/aname][anchor="pa0e0633ee819f4dcbbc877db88c1a7af9"]5][/anchor][/sup] به اندازهیِ بسنده random نیست.
من پیشتر یک خوارزم[sup][aname="rpaf2b71bf3590941c7a7ec1fadcb91804b"][[/aname][anchor="paf2b71bf3590941c7a7ec1fadcb91804b"]6][/anchor][/sup] رازنگاری نوشته بودم برای rsa که درگاشت را از cpu میگرفت, نمیدانم روی php چه اندازه دسترسی به hardware داریم, ولی
این ورتندهها[sup][aname="rpa32962091fab140c4b79084bf9da3b3c8"][[/aname][anchor="pa32962091fab140c4b79084bf9da3b3c8"]7][/anchor][/sup] (time, remote_addr, serialaized post, etc) همگی هنوز پیشبینیپذیر میباشند و به اندازهای که باید و شاید درگاشت[sup][aname="rpa7cc8d963f4504427a657ea90896033c8"][[/aname][anchor="pafdaf238307cb4654840f51c7777d74fa"]4][/anchor][/sup] را بزرگ نمیکنند (:
----
[aname="pa5e62f21127424ffe8e3a9aa248c76d8c"]1[/aname]. [anchor=rpa5e62f21127424ffe8e3a9aa248c76d8c]^[/anchor] Farzâm || فرزام: بی عیب و نقص; کامل Ϣiki-En Perfect
[aname="pa98985c732aab42b0aa6865b294eadb76"]2[/aname]. [anchor=rpa98985c732aab42b0aa6865b294eadb76]^[/anchor] Bayusidan || بیوسیدن: چشمداشتن, انتظار بردن To expect
[aname="pa7cd75407684d4e59a36ecb432a42072f"]3[/aname]. [anchor=rpa7cd75407684d4e59a36ecb432a42072f]^[/anchor] Farzâmgerâyi (farzâm+gerâ+yi) || فرزامگرایی: گرایش به فرزامی; کمالگرایی Ϣiki-En, Dehxodâ Perfectionism
[aname="pafdaf238307cb4654840f51c7777d74fa"]4[/aname]. ^ [anchor=rpafdaf238307cb4654840f51c7777d74fa]آ[/anchor] [anchor=rpa7cc8d963f4504427a657ea90896033c8]ب[/anchor] Dargâšt || درگاشت: آنتروپی Ϣiki-En, Ϣiki-Pâ Entropy
[aname="pa0e0633ee819f4dcbbc877db88c1a7af9"]5[/aname]. [anchor=rpa0e0633ee819f4dcbbc877db88c1a7af9]^[/anchor] Espâš || اسپاش: فضا Ϣiki-En, www.loghatnaameh.org Space
[aname="paf2b71bf3590941c7a7ec1fadcb91804b"]6[/aname]. [anchor=rpaf2b71bf3590941c7a7ec1fadcb91804b]^[/anchor] Xvârzmidan || خوارزمیدن: الگوریتم کردن To algorithmize
[aname="pa32962091fab140c4b79084bf9da3b3c8"]7[/aname]. [anchor=rpa32962091fab140c4b79084bf9da3b3c8]^[/anchor] Vartande || ورتنده: متغیر Ϣiki-En Variable
.Unexpected places give you unexpected returns